2012-02-19 98 views
0

我试图改变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)")) 

例如我想改变

“无效”:_ (“此值只能包含字母,数字和下划线。”)的用户名外地 每当我编辑默认形式,它表明我没有改变......即使我尝试使用chmod ...

也建议我,如果有办法限制用户在用户名字段只能输入数字...

回答

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在我看来是最干净和最好的方式来做到这一点。它做你想做的:限制用户名只有数字。

+0

嘿谢谢你的回复。我不知道在自定义表单中的编辑会替换字段设置 – user1163236 2012-02-20 04:23:22