Django密码重置后跳转报NoReverseMatch at login错误求助
问题原因
你为account应用配置了app_name = 'account'命名空间,所以该应用下所有url的反向解析都需要加account:前缀。
触发错误的login引用不在你自己编写的代码里,而是在Django内置的PasswordResetCompleteView默认模板中:内置模板里指向登录页的链接写的是{% url 'login' %},没有携带命名空间,所以找不到对应路由。
解决方案
方案1(推荐):自定义密码重置完成页模板,覆盖内置模板
- 在你的项目模板目录下新建
registration/password_reset_complete.html文件 - 写入自定义内容,将登录链接改为带命名空间的版本,示例代码:
{% block content %} <div class="page-title"> <h1>密码重置完成</h1> </div> <br> <div class="login-container"> <div class="login-box"> <br> <h3 style="text-align: center;">密码重置成功</h3> <p style="text-align: center;">你的密码已修改完成,可以<a href="{% url 'account:login' %}">点击此处登录</a></p> </div> </div> {% endblock %}
方案2:添加全局login路由别名
如果你不想修改模板,也可以在项目根目录的urls.py中添加一条全局的login路由,直接指向内置登录视图,代码示例:
from django.contrib.auth import views as auth_views urlpatterns = [ # 原有其他路由 path('login/', auth_views.LoginView.as_view(), name='login'), path('account/', include('account.urls')), ]
内容的提问来源于stack exchange,提问作者TheSunbathingCrow
相关产品推荐
相关产品推荐

