django.auth操纵模型字段/允许用户名中的空格

时间:2012-03-22 18:18:33

标签: django django-authentication

我目前正在为应用实施用户注册。我想改变django.auth默认行为以使用电子邮件而不是用户名。我想我会使用自定义身份验证后端。我希望用户仍然能够提供用户名。

  1. 如何在不更改django.auth模型中的字段的情况下,在“john doe”等用户名中添加空格。

  2. 如何制作所需的电子邮件地址。目前,如果电子邮件为空,我的UserCreation表单中的clean_email方法会引发验证错误。必须有更好的方法。

  3. 感谢Brandon和Andrew Sledge,这是我的解决方案:

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

    我从UserCreationForm复制了该字段。重要的是将\ t \ r \ n \ f添加到正则表达式。不会工作。

3 个答案:

答案 0 :(得分:2)

您始终可以覆盖contrib.auth.forms中的UserCreationForm,以实现用户名的不同字段并提供您自己的验证。只需继承表单并添加您自己的用户名字段,或在类的__init__中覆盖它。

答案 1 :(得分:1)

也许您想使用validate_slug

  

RegexValidator实例,确保值仅包含字母,数字,下划线或连字符

答案 2 :(得分:0)

对于用户名: 重写UserCreationForm(django.contrib.auth.forms)以修改字段的regex参数以允许空格。不需要对模型进行任何更改。

对于电子邮件: http://djangosnippets.org/snippets/74/