Я новичок в django и получил проблему с изменением пароля, я не получил никаких ошибок, но новый пароль тоже не сохраняет и не перенаправляет меня?
Вот мой form.py:
from django import forms
from django.contrib.auth import get_user_model
from django.db.models import Q
class NewPasswordForm(forms.Form):
error_messages = {
'old_password' : ("Your old password was entered incorrectly, Please enter it again"),
'password_mismatch' : ("The two password fields didn't match"),
}
old_password = forms.CharField(label='Current Password', widget=forms.PasswordInput)
new_password1 = forms.CharField(label='New Password', widget=forms.PasswordInput)
new_password2 = forms.CharField(label='Confirm New Password', widget=forms.PasswordInput)
field_order = ['old_password', 'new_password1', 'new_password2']
def __init__(self, user, *args, **kwargs):
self.user = user
super().__init__(*args, **kwargs)
def clean_old_passpord(self):
# Validate that the old_password field is correct.
if not self.user.check_password(old_password):
raise forms.ValidationError(
self.error_messages['old_password'],
code = 'old_password'
)
return old_password
def clean_new_password2(self):
old_password = self.cleaned_data.get('old_password')
password1 = self.cleaned_data.get('new_password1')
password2 = self.cleaned_data.get('new_password2')
if password1 and password2 and password1 != password2:
if password1 == old_password:
raise ValidationError(
self.error_messages['password_mismatch'],
code = 'password_mismatch'
)
return password2
def save(self, commit=True):
password = self.cleaned_data["new_password1"]
self.user.set_password(password)
if commit:
self.user.save()
return self.user
Вот мой view.py:
from django.shortcuts import render, redirect
from .forms import NewPasswordForm
from .models import User
from django.contrib.auth import authenticate, login, logout, update_session_auth_hash
#Don't forget login_required
def user_change_password_view(request):
form = NewPasswordForm(request.POST or None)
if request.method == 'POST':
if form.is_valid():
password = form.cleaned_data.get('new_password1')
user = form.save()
update_session_auth_hash(self.request, form.user)
return redirect(home_view) # Redirect to a success page
else:
form = NewPasswordForm(request.POST or None)
template = 'change_password.html'
context = {
'form' : form
}
return render(request, template, context)
Лика Я сказал, никаких ошибок вообще нет, но ничего не происходит, просто обновляется страница.Можно вставить что угодно, не сказав, что это неправильно.
Да, я использую пользовательскую модель пользователя, если это поможет ...
Извините за плохой английский, но я надеюсь, что вы его получите.Все вопросы помощи <3 </p>