У меня есть функция для изменения пароля пользователя, теперь я хотел бы переписать его в представление класса, оно выдает мне ошибку:
__init__() missing 1 required positional argument: 'user'
Функция:
def change_password(request):
if request.method == 'POST':
form = PasswordChangeForm(request.user, request.POST)
if form.is_valid():
user = form.save()
update_session_auth_hash(request, user)
messages.success(request, 'Your password was successfully updated!')
return redirect('profile')
else:
messages.error(request, 'Please correct the error below.')
else:
form = PasswordChangeForm(request.user)
return render(request, 'accounts/change_password.html', {
'form': form
})
Класс просмотра пока
class ChangePasswordView(FormValidMessageMixin, FormInvalidMessageMixin, FormView):
form_class = PasswordChangeForm
template_name = 'accounts/change_password.html'
success_url = reverse_lazy('profile')
def get_form_valid_message(self):
return 'Your password was successfully updated!'
def get_form_invalid_message(self):
return 'Please correct the error below.'
def form_valid(self, form):
form.author = self.request.user
form.save()
return super().form_valid(form)
urls.py
path('change-password/', ChangePasswordView.as_view(), name='change-password'),