Django 4.1: Невозможно настроить PasswordChangeForm для общих представлений
Я пытаюсь создать представление для сброса пароля, Но я пытаюсь использовать `django.contrib.auth.forms.PasswordChangeForm` для использования формы в представлении, Но есть проблема!
В django.contrib.auth.forms.SetPasswordForm
функции __init__
формы для работы формы необходим пользователь , И я не знаю, как это реализовать или убрать .
В основном, что я понял об этой форме, так это то, что это глобальный url, Но мои url следуют этому пути:
'u/<slug:slug>/account/password/
Я хотел бы знать, как переписать функцию
таким образом, чтобы она не испортила функцию родителя(__init__
) `forms.Form
init или как-то иначе предоставить пользователю форму.
Сейчас, если я пытаюсь запустить код, то получаю ошибку:
SetPasswordForm.init() missing 1 required positional argument: 'user'
forms.py:
class UserPasswordChangeForm(PasswordChangeForm):
class Meta:
model = User #Not sure if this even does anything with PasswordChangeForm
fields = ('old_password', 'new_password1', 'new_password2')
views.py:
class UserPasswordChangeView(UpdateView):
model = User
form_class = UserPasswordChangeForm
template_name = 'auth/password.html'
urls.py:
path('u/<slug:slug>/account/password/', UserPasswordChangeView.as_view(), name='password'),
используемая модель пользователя (если необходимо):
class User(AbstractUser):
slug = models.SlugField(blank=False, null=False)
def get_absolute_url(self):
return reverse('profile', kwargs={'slug': self.slug})