Django Form 自定义字段错误信息

摘要: 用 Django  Form  通常有两种方式,一种是直接从 form.Form 继承而来,自己定义一个 Form, 另外一种方式是从 ModelForm 继承而来. Django Form会校验数据是否合法,如果不合法会显示默认的错误消息,但有时候根本没有办法满足需求,我需要对某些特殊的字段显示自定义的错误消息. 根据两种 Form 的类型,处理的方法也不一样.

用 Django Form 通常有两种方式,一种是直接从 form.Form 继承而来,自己定义一个 Form, 另外一种方式是从 ModelForm 继承而来. Django Form会校验数据是否合法,如果不合法会显示默认的错误消息,但有时候根本没有办法满足需求,我需要对某些特殊的字段显示自定义的错误消息. 根据两种 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 使用

上一篇: Java 程序保存图片,文件到 MongoDB 数据库
下一篇: Java8来了,回顾一下Java7的一些特性.
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号