升级到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 %}
当我在Django的admin_password_reset
中将password_reset
更改为login.html
时,该链接显示在登录页面上,并按预期工作。
在我的urls.py
中,我有:
path('lodging/', include('django.contrib.auth.urls')),
我的项目对身份验证系统没有其他修改。这是错误还是我错过了什么?
更新
我签出了一个较早的Django项目(v1.11),并且存在相同的内容:login.html
显示admin_password_reset
,而auth.urls
显示password_reset
。另外,“忘记密码”链接也不会显示在登录页面上。此外,在所有Django源代码中对admin_password_reset
的“抓取”仅返回login.html
文件。
所以可以肯定我做错了。
答案 0 :(得分:0)
我在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')
]