Мой пароль пользователя не изменяется, хотя при использовании представлений сброса пароля и изменения пароля ошибок не возникает
Я довольно новичок в django. Я использую пользователя Abstract, я пытался изменить пароль с помощью представлений PasswordReset, PasswordChangeViews и даже на учетной записи администратора, а также с помощью командной строки. Я не получаю никаких ошибок, каждый раз все вроде бы работает нормально, но когда я пытаюсь войти в систему снова, я понимаю, что старый пароль все еще остается прежним. Я не знаю, что еще я могу сделать
Я пробовал использовать учетную запись администратора, PasswordChangeViews, PasswordResetViews и командную строку. Я не получаю никаких ошибок. Кажется, что все работает нормально, но когда я вхожу в систему после смены пароля, пароль по-прежнему не меняется
#Модель пользователя
class User(AbstractUser):
class Role(models.TextChoices):
ADMIN="ADMIN",'Admin'
STAFF="STAFF",'Staff'
CUSTOMER="CUSTOMER",'Customer'
CENTRAL="CENTRAL",'Central'
MONITOR="MONITOR",'Monitor'
username = models.CharField(max_length=200, null=True)
name = models.CharField(max_length=200, null=True)
email = models.EmailField(null=True, unique=True)
role=models.CharField(max_length=50, choices=Role.choices, null=True)
updated = models.DateTimeField(auto_now =True)
created =models.DateTimeField(auto_now_add=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS= ['username','role']
class Meta:
ordering =['-updated','-created']
def save(self, *args, **kwargs):
if not self.pk:
self.role= self.base_role
return super().save(*args,**kwargs)
#Просмотры
def passwordChange(request):
user=User.objects.get(username=request.user.username)
if request.method == 'POST':
form = ChangePasswordForm(user=user,data=request.POST)
if form.is_valid():
form.save()
userp=User.objects.get(email=request.user)
userp.set_password(form.clean_new_password2())
userp.is_active=True
userp.save()
update_session_auth_hash(request, userp)
print(userp.check_password('XXXXXXXX')) #(XXXXx is actually hardedcoded password to chack if password changed at this point and i get True)
print(userp)
print('saved')
messages.success(request, 'Your password was successfully updated!')
return redirect('password_success')
else:
messages.error(request, 'Please correct the error below.')
else:
form= ChangePasswordForm(user=user)
return render(request,'base/password.html',{'form':form})
#form
class ChangePasswordForm(PasswordChangeForm):
class Meta:
model=User
fields='__all__'
#url
path ('password_change/', views.passwordChange, name='password'),
path ('password_success/', views.password_success, name='password_success'),
path ('reset_password/', auth_views.PasswordResetView.as_view(),name="reset_password"),
path ('reset_password_sent/', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),
path ('reset/<uidb64>/<token>', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
path ('reset_password_complete/', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete')
#admin
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User
# Register your models here.
class CustomUserAdmin(UserAdmin):
model = User
admin.site.register(User, CustomUserAdmin)