2012-02-19 99 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