Django Form 自定义字段错误信息
By:Roy.LiuLast updated:2014-04-20
用 Django Form 通常有两种方式,一种是直接从 form.Form 继承而来,自己定义一个 Form, 另外一种方式是从 ModelForm 继承而来. Django Form会校验数据是否合法,如果不合法会显示默认的错误消息,但有时候根本没有办法满足需求,我需要对某些特殊的字段显示自定义的错误消息. 根据两种 Form 的类型,处理的方法也不一样.
1. 直接继承 form.Form 的方式自定义错误消息
才有类似如下代码:
这里为 yourname 自定义了error_messages, 用来显示自定义的错误信息.
2. 继承ModelForm 的方式实现自定义错误信息
这种情况下,需要才有json 数据格式,对特定的字段特殊处理,比如如下例子:
同样这里自定义了error_messages, 选择了models class 中部分字段. 得到的效果如下:
可以看到自定义错误信息成功。django form 的例子还可以参考这里: Django Form 使用
1. 直接继承 form.Form 的方式自定义错误消息
才有类似如下代码:
class TestForm(forms.Form): #==label 用来控制 form 字段的 中文显示,widget 可以控制其他属性,比如样式等。 yourname = forms.CharField(label='名称', max_length=50, widget=forms.TextInput(attrs={'style':'border:1px solid #ccc;'}), error_messages={'required': '你这个无名人士.....'}) website = forms.URLField(required=False,widget=forms.TextInput(attrs={'class':'myclass'})) email = forms.EmailField(label='邮箱') content = forms.CharField(label='内容',widget=forms.Textarea(attrs={'cols':'80','rows':'5'})) cusWidget = forms.CharField(widget = CharsLeftInput(attrs={'cols':'80','rows':'5'}),max_length=30)
这里为 yourname 自定义了error_messages, 用来显示自定义的错误信息.
2. 继承ModelForm 的方式实现自定义错误信息
这种情况下,需要才有json 数据格式,对特定的字段特殊处理,比如如下例子:
class TestModelForm(ModelForm): class Meta: model = MyComment #==只显示这几个字段================ fields = ('yourname','email','website','content','qq','msn') error_messages = { 'yourname': { 'required':"modelform 得到了:你是个无名人士", }, } #==或者用排除法 #exclude = ('hiddenfields1',) #===如果需要变更样式, 或者变更显示中文名称.更改 label def __init__(self, *args, **kwargs): super(TestModelForm, self).__init__(*args, **kwargs) #====改变样式,也可以赋值 class=???,在外面html页面上先定义好,个人不推荐直接在代码里写,只是为了演示。 self.fields['yourname'].widget.attrs.update({'style' : 'border:1px dashed #ccc;'}) self.fields['email'].label='伊妹儿'
同样这里自定义了error_messages, 选择了models class 中部分字段. 得到的效果如下:
可以看到自定义错误信息成功。django form 的例子还可以参考这里: Django Form 使用
From:一号门
Previous:Java 程序保存图片,文件到 MongoDB 数据库
COMMENTS