2

Django アプリでユーザー名にスペースを許可しようとしています。これは私のフォームからのものです:

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

ユーザー名を文字で始めたい。その後、文字とスペースとハイフンを許可します。どういうわけかフォームが「John Smith」で検証に失敗し、その理由がわかりません。他の場所にスペースの制限はありますか?

4

1 に答える 1

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')
        ])

これがそれに光を当てることを願っています。

于 2013-11-11T17:23:22.773 に答える