指定标注-libmodbus源码解析

时间:2024-07-14 01:47:18
【文件属性】:

文件名称:指定标注-libmodbus源码解析

文件大小:7.37MB

文件格式:PDF

更新时间:2024-07-14 01:47:18

PDF

6.10自定义验证规则 假如我们推出了反馈表单,电子邮件纷至沓来。这就引出一个问题:有些邮件可能只有一两个词,不知所 云。因此,我们决定采取一个新的验证措施:建议写四个词以上。 在 Django 表单中使用自定义的验证有多种方式。如果验证规则要不断复用,可以自定义一个字段类型。不 过,多数自定义的验证都是一次性的,可以直接写在 Form类中。我们想对 message字段做额外的验证,因此 在 Form类中添加一个 clean_message()方法: from django import forms class ContactForm(forms.Form): subject = forms.CharField(max_length=100) email = forms.EmailField(required=False) message = forms.CharField(widget=forms.Textarea) def clean_message(self): message = self.cleaned_data['message'] num_words = len(message.split()) if num_words < 4: raise forms.ValidationError("Not enough words!") return message Django 的表单系统会自动查找名称以 clean_开头、以字段名结尾的方法。如果存在这样的方法,在验证过 程中调用。这里,clean_message()方法会在指定字段的默认验证逻辑(这个 CharField是必填的)执行完毕 后调用。 因为字段数据经过部分处理了,所以从 self.cleaned_data中获取。此外,我们无需检查值是否存在,或者 不为空,默认的验证逻辑已经检查过了。我们的处理方式很简单,只是使用 len()和 split()计算单词的数 量。如果用户输入的词数过少,抛出 forms.ValidationError。 这个异常中指定的字符串会出现在错误消息列表中显示给用户。注意,方法的最后一定要显式返回那个字段 清理后的值。这样才能在自定义的验证方法中修改那个值(或者转换成其他 Python 类型)。如果没有 return 语句,返回的是 None,如此一来原来的值就丢失了。 6.11指定标注 在 Django 自动生成的表单 HTML 中,默认的标注是把下划线替换成空格,并把首字母变成大写,例如, email字段的标注是“Email”。(听着很熟悉吧,这与 Django 的模型为字段生成 verbose_name的值使用的算 法相同。我们在第 4 章介绍过。)与 Django 的模型一样,字段的标注是可以自定义的。方法很简单,指定 label参数即可,如下所示: class ContactForm(forms.Form): subject = forms.CharField(max_length=100) email = forms.EmailField(required=False, label='Your e-mail address') message = forms.CharField(widget=forms.Textarea) 96 - 第 6 章 Django 表单


网友评论