'password1': нет - пароль всегда отсутствует при регистрации в Django UserCreationForm - PullRequest
0 голосов
/ 10 марта 2020

Я занимаюсь разработкой своего проекта в течение нескольких месяцев. Регистрация работала отлично, но в какой-то момент она перестала принимать пароль: пароль всегда сохраняется как Нет , а пользователь сохраняется в базе данных с пароль не установлен . Я никоим образом не изменил ни форму, ни представление, работающее с регистрацией, поэтому не знаю, откуда оно.

Мой код:

forms.py

class UserSignUpForm(UserCreationForm):
    username = CharField(max_length=35, required=True})
    email = UnicodeEmailField(required=True)
    password1 = CharField(max_length=35, required=True, widget=PasswordInput)
    captcha = ReCaptchaField(error_messages={'required': 'Prove you are not a robot.'})

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

def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    del self.fields['password2']

views.py

class UserSignUpView(generic.CreateView):
     form_class = UserRegistrationForm
     template_name = 'accounts/registration.html'

     def form_valid(self, form):
        form.cleaned_data['password'] = form.cleaned_data.pop('password1')
        form.cleaned_data.pop('captcha', None)
        user = User.objects.create_user(**form.cleaned_data)
        ...
        return HttpResponseRedirect(reverse('account_activation_sent'))

templates.py

        <div class="password">
        <label for="{{ form.password1.id_for_label }}">Password</label>
        </div>
    {{ form.password1.errors }}

    {% render_field form.password1 placeholder="Enter your password" class="text-pass" %}

My Модель пользователя :

class User(AbstractUser):
    username = CharField(
        max_length=150,
        unique=True,
        validators=[CustomUsernameValidator()],)
    email = UnicodeEmailField(blank=True)
    id = AutoField(primary_key=True)
    uid = UUIDField(default=uuid.uuid4, editable=False)
    email_confirmed = BooleanField(default=False)
    is_active = BooleanField(default=False)
    last_movie_seen = CharField(max_length=150, blank=True)
    associated_user = OneToOneField(AssociatedUser, on_delete=CASCADE, null=True, blank=True)

Вопрос: почему form.cleaned_data ['password1'] всегда возвращает None, а пользователь всегда сохранено в базу данных с пароль не установлен ?

...