django-registration:由于密码中的字符无效,中文用户无法注册

时间:2012-08-15 13:07:45

标签: python django internationalization django-registration

来自新加坡的人报告他无法注册我的网站。该网站是Django项目,我们使用django-registration模块。关于密码字段的错误消息说明:

this value may contain only letters, numbers and etc

用户说他的密码只使用拉丁字母,但他有一个中文键盘,他的系统(Windows)配置为输入汉字。我不知道如何在我的开发环境中重现这个问题。

有谁知道什么可能导致这个问题? django-registration是否适用于非ASCII字符?用户说他只使用拉丁字符,所以可能问题是他的密码被编码为Unicode,但我对此并不确定。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我猜问题不在于密码,而在于用户名。查看函数UserCreationFormUserChangeForm here

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

可能是他正在使用一些不满足这个正则表达式的拉丁字符。

如果不匹配此正则表达式,您可能会收到此错误。