Django用户名中的Unicode字符

时间:2012-08-29 19:32:45

标签: python django unicode internationalization django-registration

我正在使用Django 1.4开发一个网站,我使用django-registration进行注册过程。事实证明,只要用户输入例如用户名,就不允许使用Unicode字符作为用户名。中文字符作为用户名的一部分,注册失败:

  

此值可能只包含字母,数字和@ / ./ + / - / _字符。

是否可以更改它以便在用户名中允许使用Unicode字符?如果是,我该怎么办?还有,它会引起任何问题吗?

2 个答案:

答案 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。自定义用户模型也可以使用它们   验证器。