如何查找Django模型字段error_messages的可用配置键?
Django表单error_messages可用配置键查找方法
为Django表单字段配置自定义错误提示的常规写法参考如下:
class UserCreationForm(forms.ModelForm): password1 = forms.CharField( label='password', widget=forms.PasswordInput(attrs={'class': 'form-control form-control-lg'}), error_messages={ 'required': "required", } )
如果需要查找error_messages支持的除required之外的其他配置键,可通过以下几种方式获取,结果完全匹配你当前使用的Django版本,不会出现兼容问题:
- 直接查询字段类的内置默认错误配置
所有Django表单字段的内置错误键,都定义在字段类的default_error_messages类属性中,最准确的查询方式是通过项目的Django shell直接打印:- 在项目根目录执行命令进入shell环境:
python manage.py shell - 导入你当前使用的字段类,打印默认错误字典即可拿到全部可用内置键,以示例中用到的
CharField为例:
执行后会直接返回该字段所有内置错误的键和默认提示,比如CharField的返回结果包含from django import forms print(forms.CharField.default_error_messages)required、min_length、max_length、invalid这几个常用键,你可以直接在error_messages里覆写对应提示内容。
如果你用的是其他类型字段,替换成对应类名查询即可,比如forms.EmailField、forms.IntegerField:不同字段的专属错误键有区别,比如IntegerField额外支持max_value、min_value键,对应数值超出上下限的错误场景,EmailField的invalid键对应邮箱格式错误场景。 - 在项目根目录执行命令进入shell环境:
- 匹配自定义校验器的code值
如果你给字段额外添加了自定义校验逻辑(比如正则校验、密码强度校验),校验器定义时传入的code参数值,就是可以在error_messages中配置的键。比如你给密码字段加了一个code为password_too_weak的校验器,就可以直接在error_messages里添加'password_too_weak': '密码强度不足,需同时包含大小写字母和数字'的配置。 - Widget组件的错误键查询
示例中用到的PasswordInput属于表单Widget组件,如果Widget本身带内置校验逻辑(比如HTML5表单属性触发的前端校验),它的错误键同样定义在对应Widget类的default_error_messages属性中,查询方式和字段类一致,在shell中打印对应Widget类的该属性即可拿到可用键。
内容的提问来源于stack exchange,提问作者CC7052
相关产品推荐
相关产品推荐

