我正在尝试在我的Django应用中允许用户名中的空格。这是我的形式:
class SignUpForm(django.forms.ModelForm):
...
username = django.forms.RegexField(
regex=r'^[a-zA-Z]{1}[a-zA-Z -]{1,29}$'
我希望用户名以字母开头。之后我允许使用字母,空格和连字符。不知何故,表单未通过“John Smith”验证,我不明白为什么。是否对其他地方的空间有限制?
答案 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')
])
希望这能为它提供一些启示。