我正在尝试更改django默认注册表单中的一些错误消息:
class RegistrationForm(forms.Form):
username = forms.RegexField(regex=r'^\w+$',max_length=30,widget=forms.TextInput(attrs=attrs_dict),label=_("Username"),error_messages={'invalid': _("This value must contain only letters,numbers and underscores.")})
email=forms.EmailField(widget=forms.TextInput(attrs=dict(attrs_dict,maxlength=75)),label=_("Email address"))
password1 = forms.CharField(widget=forms.PasswordInput(attrs=attrs_dict,render_value=False),label=_("Password"))
password2 = forms.CharField(widget=forms.PasswordInput(attrs=attrs_dict,render_value=False),label=_("Password (again)"))
例如我想要更改
'invalid':用户名字段的_(“此值必须只包含字母,数字和下划线。”) 每当我编辑默认表格时,它都显示我没有变化......即使我尝试使用chmod ......
还建议我是否有办法限制用户只输入用户名字段中的数字...
答案 0 :(得分:0)
查看django.forms.field中的代码(第423至439行)(在django 1.3.1上)。
您注意到对于RegexField,django使用关键字参数error_message覆盖error_messages ['invalid'],默认为none。
因此,如果您想保留RegexField,请执行以下操作:
username = forms.RegexField(regex=r'^\w+$',max_length=30,widget=forms.TextInput(attrs=attrs_dict),label=_("Username"),error_message = _("This value must contain only letters,numbers and underscores."))
要仅接受数字作为用户名,我建议使用forms.IntegerField,它会提供以下内容:
username = forms.IntegerField(min_value = 0, error_messages={'invalid': _("This value must contain only letters,numbers and underscores.")})
在我看来,使用IntegerField是最干净,最好的方法。它可以满足您的需求:将用户名限制为仅数字。