如何在Django用户名中允许空格?

时间:2013-11-11 16:23:12

标签: python django

我正在尝试在我的Django应用中允许用户名中的空格。这是我的形式:

class SignUpForm(django.forms.ModelForm):
...
    username = django.forms.RegexField(
       regex=r'^[a-zA-Z]{1}[a-zA-Z -]{1,29}$'

我希望用户名以字母开头。之后我允许使用字母,空格和连字符。不知何故,表单未通过“John Smith”验证,我不明白为什么。是否对其他地方的空间有限制?

1 个答案:

答案 0 :(得分:3)

django auth用户基于抽象用户类(django.contrib.auth.models)。绑定的表单可能有效,但如果您尝试保存用户对象验证失败。

查看django.contrib.auth.models关于用户名的来源:

class AbstractUser(AbstractBaseUser, PermissionsMixin):
    """
An abstract base class implementing a fully featured User model with
admin-compliant permissions.

Username, password and email are required. Other fields are optional.
"""
    username = models.CharField(_('username'), max_length=30, unique=True,
        help_text=_('Required. 30 characters or fewer. Letters, digits and '
                    '@/./+/-/_ only.'),
        validators=[
            validators.RegexValidator(r'^[\w.@+-]+$', _('Enter a valid username.'), 'invalid')
        ])

希望这能为它提供一些启示。