我正在使用Django 1.4开发一个网站,我使用django-registration进行注册过程。事实证明,只要用户输入例如用户名,就不允许使用Unicode字符作为用户名。中文字符作为用户名的一部分,注册失败:
此值可能只包含字母,数字和@ / ./ + / - / _字符。
是否可以更改它以便在用户名中允许使用Unicode字符?如果是,我该怎么办?还有,它会引起任何问题吗?
答案 0 :(得分:5)
这真的不是问题 - 因为这个字符限制只是在我记忆中的UserCreationForm(或django-registration中的RegistrationForm)中,你可以很容易地创建自己的字段,因为数据库中的字段只是普通的TextField。
但这些限制并非没有理由。我现在可以想到的一个可能的问题是创建链接 - 用户名通常用于此,它可能会导致问题。虚假账户的可能性也更大,用户名看起来相同,但实际上是不同的角色等等。
答案 1 :(得分:3)
Django 1.10现在正式支持unicode用户名,请参阅:
django.contrib.auth中的用户模型最初只接受ASCII 用户名中的字母。虽然它不是一个刻意的选择,Unicode 使用Python 3时始终接受字符。
用户名验证器现在明确接受Unicode字母 默认只在Python 3上。可以覆盖此默认行为 更改User模型的username_validator属性,或更改为any 该模型的代理,使用ASCIIUsernameValidator或 UnicodeUsernameValidator。自定义用户模型也可以使用它们 验证器。