Django-регистрация очищает все поля, если любое из них недействительно - PullRequest
1 голос
/ 01 мая 2011

Я создал систему регистрации, используя django-registration. Я расширил RegistrationFormTermsOfService, как показано ниже. Все работает нормально, за исключением случаев, когда какое-либо поле недопустимо, страница обновляется, и все поля очищаются, поэтому пользователь должен ввести все заново. Это поведение по умолчанию для django-регистрации? Я не хочу менять регистрационный код Django. Есть ли способ заставить это работать так, чтобы он оставил поля, заполненные тем, что пользователь ввел до сих пор?

class UserCreationFormExtended(RegistrationFormTermsOfService):
    email = forms.EmailField(label=("Email"), help_text = "We'll send...")
    username = forms.RegexField(
        label='Username:',
        max_length=35,
        min_length=6,
        regex=r'^[\w-]{6,35}$',
        help_text = 'Between 6 and 35 characters',
        error_message = 'Enter between 6 and 35 alphanumeric characters.')

    password1 = forms.RegexField(
        max_length=30,
        min_length=6,
        regex=r'^[\w-]{6,35}$',
        help_text = 'Between 6 and 35 characters',
        error_message = 'Enter between 6 and 35 characters.')

    def __init__(self, *args, **kwargs):
        super(UserCreationFormExtended, self).__init__(*args,
        **kwargs)
        self.fields['email'].required = True

    class Meta:
        model = User
        fields = ('username', 'email')

1 Ответ

0 голосов
/ 01 мая 2011

Django-регистрация не «сбрасывает» форму, если ввод неверен, представление возвращает форму, заполненную опубликованными данными.

Вы передаете свою форму в представление регистрации?

У вас есть что-то подобное в вашем url.py?

url(r'^register/$', 'registration.views.register', {'form_class':UserCreationFormExtended}),

Метакласс, который вы определили, кажется мне бесполезным, вам это действительно нужно?Инициализация также довольно бесполезна, так как вы можете получить тот же результат с этим:

email = forms.EmailField(label=("Email"), required= True, help_text = "We'll send...")

, но с меньшим количеством кода.

Надеюсь, это поможет:)

...