Reputation: 199
I'm using Django 3.1 and I'm trying to reset the password.
Every step goes fine but one:
After the password reset using
PasswordResetConfirmView
,
I use success_url to reach the PasswordCompleteView
, but a NoReverseMatch Error is raised:
http://127.0.0.1:8000/customer/reset/Mjg/set-password/reset/done/
: Mjg/set-password/ always stay in the middle.
How can I remove this ?
The template is the following one:
{% extends "./base.html" %}
{% block title %}Confirmation du Mot de Passe{% endblock %}
{% block content %}
<h1>Réinitialisez votre mot de passe</h1>
{% if validlink %}
<p> Saisissez votre mot de passe, puis confirmez-le :</p>
<form method="post">
{{ form.as_p }}
{% csrf_token %}
<p><input type='submit' value='Changer'></p>
</form>
{% else %}
<p>Le lien n'est pas valide. Veuillez renouveler votre demande</p>
{% endif %}
{% endblock %}
The url path is the following one:
path('reset/<uidb64>/<token>/',
auth_views.PasswordResetConfirmView.as_view(
template_name="customer/password_reset_confirm.html",
success_url="reset/done/",
post_reset_login=True
),
name='password_reset_confirm')
and the outcome is: 'http://127.0.0.1:8000/customer/reset/Mjg/set-password/reset/done/` Thank so much for your help
Upvotes: 2
Views: 178
Reputation: 199
Here is the detailed code to solve this small issue:
path('reset/<uidb64>/<token>/',
auth_views.PasswordResetConfirmView.as_view(
template_name="customer/password_reset_confirm.html",
success_url="/customer/reset/done/",
post_reset_login=True),
name='password_reset_confirm'),
It was solved by detailing the success_url.
Upvotes: 0
Reputation: 5884
Your success_url
must be start with the forward slash success_url="/reset/done/"
.
But I would use better reverse_lazy
- Django-Docs:
from django.urls import reverse_lazy
path('reset/<uidb64>/<token>/',
auth_views.PasswordResetConfirmView.as_view(
template_name="customer/password_reset_confirm.html",
success_url=reverse_lazy("password_reset_done"),
post_reset_login=True
),
name='password_reset_confirm')
Upvotes: 1