2012-08-15 29 views
2

新加坡有人報稱他無法註冊我的網站。該網站是一個Django項目,我們使用django註冊模塊。該錯誤消息說,有關密碼字段:django-registration:由於密碼中的字符無效,中國用戶無法註冊

this value may contain only letters, numbers and etc 

用戶說,他在他的密碼只使用拉丁字母的,但他有一箇中國的鍵盤和他的系統(Windows)的配置爲中國文字輸入。我不知道如何在我的開發環境中重現問題。

有誰知道什麼會導致這個問題? Django註冊是否意味着使用非ASCII字符?用戶說他只使用了拉丁字符,所以問題可能是他的密碼被編碼爲Unicode,但我不確定。

任何幫助將不勝感激。

回答

2

我猜問題不是用密碼,而是用用戶名。請參閱功能UserCreationFormUserChangeFormhere

username = forms.RegexField(
     label=_("Username"), max_length=30, regex=r"^[\[email protected]+-]+$", 
     help_text = _("Required. 30 characters or fewer. Letters, digits and " 
         "@/./+/-/_ only."), 
     error_messages = { 
      'invalid': _("This value may contain only letters, numbers and " 
         "@/./+/-/_ characters.")}) 

可能是他正在使用的是不符合這個表達式一些拉丁字符。

你可能會遇到這個錯誤,但不匹配這個正則表達式。

+0

非常感謝!讓我在接受你的答案之前向用戶確認你的發現 - 我剛剛給他發了一封電子郵件,要求再次嘗試註冊,以確保用戶名不含中文字符。 – piokuc 2012-08-15 14:31:08

+0

用戶說他試圖輸入一個只包含拉丁字符的名字......我懷疑它傳遞給編碼爲unicode的服務器,但我真的不知道如何測試它/在我的開發盒中重現它。 – piokuc 2012-08-16 20:08:19

+0

如何使用我自己的代碼更改/覆蓋'UserChangeForm'? 'UserChangeForm'明顯被'django-registration'使用。我已經看到了一些建議,通過從UserChangeForm繼承我可以覆蓋它的一些行爲(在這種情況下:接受Unicode),但是我怎樣才能讓'django-registration'知道新的類I派生自'UserChangeForm'是它應該使用的一個? – piokuc 2012-09-10 17:29:39