Django 2.1.3重置密码链接未显示

时间:2018-11-28 12:41:48

标签: django django-admin django-authentication

升级到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文件。

所以可以肯定我做错了。

1 个答案:

答案 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')
]