django - Django 密码重置中的 NoReverseMatch
问题描述
我正在使用 Django 3.1,并且正在尝试重置密码。每一步都很好,但有一个:使用 重置密码后
PasswordResetConfirmView
,我使用 success_url 到达PasswordCompleteView
,但引发 NoReverseMatch 错误
http://127.0.0.1:8000/customer/reset/Mjg/set-password/reset/done/
::Mjg/set-password/ 始终停留在中间。我怎样才能删除这个?
模板如下:
{% 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 %}
url 路径如下:
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')
结果是:'http://127.0.0.1:8000/customer/reset/Mjg/set-password/reset/done/` 非常感谢您的帮助
解决方案
您success_url
必须以正斜杠开头success_url="/reset/done/"
。
但我会使用更好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')
推荐阅读
- android - 从 AsyncTask 获取返回
- java - 放置freemarker模板文件的最佳做法是什么
- android - 无法在阵列适配器内的 View Pager 中添加视图或膨胀
- python - 如何检查 nan 中的熊猫列值,这些值是 python 中的列表
- javascript - javascript调用递归函数时堆栈何时耗尽?
- opencv - 如何从单个组件创建 2D 透视变换矩阵?
- html - 触发:悬停在移动元素上而不移动鼠标
- algorithm - 如何实现 Btree 的迭代器?
- laravel - 在laravel错误中获取除图像之外的所有数据
- python - Python - 无法读取整个 .txt 文件:.readlines 错误?