Django Ошибка сброса пароля: Путь URL должен содержать параметры 'uidb64' и 'token'

Я пытался реализовать сброс пароля с помощью электронной почты в django. Вот мои представления:

class UserPasswordResetView(PasswordResetView):
    template_name = "accounts/password_reset_form.html"
    email_template_name = "accounts/password_reset_email.html"
    success_url = reverse_lazy("accounts:password_reset_done")


class UserPasswordResetDoneView(PasswordResetDoneView):
    template_name = "accounts/password_reset_done.html"


class UserPasswordResetConfirmView(PasswordResetConfirmView):
    template_name = "accounts/password_reset_confirm.html"
    success_url = reverse_lazy("accounts:password_reset_complete")


class UserPasswordResetCompleteView(PasswordResetCompleteView):
    template_name = "accounts/password_reset_complete.html"

urls.py:

path("reset/", UserPasswordResetView.as_view(), name="password_reset"),
path(
    "reset/done/", UserPasswordResetDoneView.as_view(), name="password_reset_done"
),
path(
    "confirm/<uidb64>/<token>/",
    UserPasswordResetConfirmView.as_view(),
    name="password_reset_confirm",
),
path(
    "confirm/complete/",
    UserPasswordResetConfirmView.as_view(),
    name="password_reset_complete",
),

Все идет хорошо до этапа подтверждения пароля. Но после отправки формы, вместо того, чтобы показать password_reset_complete.html, она показывает эту ошибку:

ImproperlyConfigured at /accounts/confirm/complete/
The URL path must contain 'uidb64' and 'token' parameters.

Он говорит, что не хватает этих параметров в password_reset_complete url. Поэтому я попробовал добавить их в url:

path(
    "confirm/complete/<uidb64>/<token>/",
    UserPasswordResetConfirmView.as_view(),
    name="password_reset_complete",
),

И он показывает эту новую ошибку:

NoReverseMatch at /accounts/confirm/MQ/set-password/
Reverse for 'password_reset_complete' with no arguments not found. 1 pattern(s) tried: ['accounts/confirm/complete/(?P<uidb64>[^/]+)/(?P<token>[^/]+)/\\Z']

Несмотря на появление этих ошибок, пароль действительно сбрасывается. Единственная проблема заключается в отображении шаблона завершения сброса пароля.

Вернуться на верх