Django-registration очищает все поля, если какие-либо из них недействительны

StackOverflow https://stackoverflow.com/questions/5849214

  •  27-10-2019
  •  | 
  •  

Вопрос

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

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')
Это было полезно?

Решение

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

Вы передаете свою форму, чтобы зарегистрировать просмотр?

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

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

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

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

Но с меньшим кодом.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top