django - Django 2.1.3 重置密码链接不显示
问题描述
升级到 Django 2.1.3 后,我注意到“忘记了您的密码或用户名?” 管理员登录页面中缺少链接。经过一番调查,我发现django.contrib.auth.urls.py
模块使用password_reset
了重置 url 的名称,而在django/contrib/admin/templates/admin/login.html
模板中,url 被命名为admin_password_reset
:
django.contrib.auth.urls.py(第 16 行)
path('password_reset/', views.PasswordResetView.as_view(), name='password_reset'),
django/contrib/admin/templates/admin/login.html(从第 54 行开始)
{% url 'admin_password_reset' as password_reset_url %}
{% if password_reset_url %}
<div class="password-reset-link">
<a href="{{ password_reset_url }}">{% trans 'Forgotten your password or username?' %}</a>
</div>
{% endif %}
当我更改admin_password_reset
为password_reset
in Django'slogin.html
时,链接显示在登录页面上并按预期工作。
在我的urls.py
我有:
path('lodging/', include('django.contrib.auth.urls')),
我的项目对身份验证系统没有其他修改。这是一个错误还是我错过了什么?
更新
我检查了我的一个较旧的 Django 项目(v1.11)并且存在相同的东西:login.html
显示admin_password_reset
和auth.urls
显示password_reset
。此外,“忘记密码”链接不会显示在登录页面上。admin_password_reset
此外,所有 Django 源代码中的“grepping”只返回login.html
文件。
所以我肯定做错了什么。
解决方案
我在 django 3 上遇到了同样的问题。不同版本的 django 需要不同的代码,但基本上它们都只需要你指定 admin_password_reset 的 url
这是对我有用的 django 3:
from django.contrib.auth.views import PasswordResetView
urlpatterns = [
path('admin/', admin.site.urls),
path(r'admin_password_reset/', PasswordResetView.as_view(), name='admin_password_reset')
]
推荐阅读
- flutter - 覆盖自定义颤振小部件
- html - CSS Safari 14 出现问题,当包含在弹性框内的网格中时,子元素会爆炸
- javascript - 删除深层嵌套一维数组中的所有嵌套子节点
- reactjs - 如何检查点击事件是否发生在特定元素内部或外部
- asp.net-core - MVC Net Core 3.1:创建和下载 PDF 文件的工具
- node.js - 如何在 nodejs 14.15 中运行 WebAssembly
- java - GSON; 如何处理END_DOCUMENT?
- c# - 如何在引导警报 -bootstrap MVC 中插入换行符
- reactjs - 为什么 ReactDOMServer.renderToString 不返回原始 HTML
- flutter - Flutter - 如何在后台格式化通知的标题和正文?