在Django中重置密码时没有反向匹配

时间:2018-03-20 00:07:04

标签: python django

我尝试在我的网站中实现内置的Django身份验证视图,以帮助用户重置密码。我已经设置了根URL以在django.contrib.auth.urls中包含提供的URLconf,如下所示:

path('', include('django.contrib.auth.urls'))

我已将模板目录中的所有模板设置在注册文件夹中。

所以,如果我转到/password_reset,我会得到正确的页面来更改我的密码

如果我输入电子邮件,我会收到更改密码电子邮件。

如果我点击电子邮件中的链接,我会转到reset/***/set-password page

但是,如果我尝试输入新密码,则提交并转到reset/done,但我收到以下错误:

NoReverseMatch at /reset/done/ Reverse for 'sign_in' not found. 'sign_in' is not a valid view function or pattern name.

我也有一个'帐户'我的项目中的应用包含自定义' sign_in'网址。这可能是问题吗?这是否覆盖了Django的某种预先构建的sign_in页面?

app_name = "accounts"

urlpatterns = [
    url(r'sign_in/$', views.sign_in, name='sign_in'),
    url(r'sign_up/$', views.sign_up, name='sign_up'),
    url(r'sign_out/$', views.sign_out, name='sign_out'),
    url(r'profile/$', views.view_profile, name='profile'),
    url(r'profile/edit/$', views.edit_profile, name='edit_profile'),
    url(r'profile/change_password/$', views.change_password, name='change_password'),
    url(r'favorites/$', views.view_favorites, name='favorites'),
    url(r'^subscribe/', views.subscribe, name = "subscribe"),

1 个答案:

答案 0 :(得分:0)

好的,这是一个非常简单的修复方法。在settings.py文件中,我需要将LOGIN_URL设置为sign_in,因为它需要包含应用程序的名称,例如accounts:sign_in