Как использовать UpdateView изменить пароль пользователя в Django - PullRequest
1 голос
/ 08 марта 2019

у меня есть что-то код
1.При попытке изменить пароль пользователя пароль, хранящийся в базе данных, представляет собой обычный текст.
2. Пароль базы данных пуст при отправке формы без ввода пароля.

Что мне делать? спасибо

class UserUpdate(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
model = User
template_name = 'users/UserUpdate.html'
context_object_name = 'UserUpdate'
form_class = UserUpdateForm
success_url = reverse_lazy('UserList')
success_message = 'update success'

def form_valid(self, form):
    password = form.cleaned_data.get('password')
    if not password:
        return super().form_valid(form)


    return super().form_valid(form)

Формы

class UserUpdateForm(ModelForm):

password = forms.CharField(
    required=False, label="password",
    max_length=32, strip=False,
    widget=forms.PasswordInput,
)

class Meta:

    model = User
    fields = ['username', 'password', 'last_name', 'email', 'is_superuser', 'is_active']


    def save(self, commit=True):
        password = self.cleaned_data.get('password')
        user = super().save(commit=commit)
        if password:
            user.reset_password(password)
        else:
            pass
        return user

1 Ответ

0 голосов
/ 08 марта 2019

Здесь есть пример: https://docs.djangoproject.com/en/2.1/topics/auth/default/#changing-passwords

Если вы хотите, чтобы код, который вы опубликовали, работал, вы можете использовать set_password() для пользователя.

user.set_password('new password')
user.save()

Но, какТимми О'Махони сказал, что лучше использовать https://docs.djangoproject.com/en/2.1/topics/auth/default/#module-django.contrib.auth.forms

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...