【问题标题】:Django: NoReverseMatch -> Reverse for 'password_reset_done' not found. 'password_reset_done' is not a valid view function or pattern nameDjango:NoReverseMatch -> 未找到“password_reset_done”的反向。 “password_reset_done”不是有效的视图函数或模式名称
【发布时间】:2018-10-14 04:28:37
【问题描述】:

访问http://localhost:8000/reset-password/ 时出现以下错误:

/reset-password/ 处的 NoReverseMatch

找不到“password_reset_done”的反向。 'password_reset_done' 不是有效的视图函数或模式名称。

但是,如果我访问http://localhost:8000/reset-password/done/,它不会显示错误。

from django.conf.urls import url
from account import views
from django.contrib.auth.views import (
    login,
    logout,
    password_reset,
    password_reset_done,
    password_reset_confirm,
    password_reset_complete,
)


urlpatterns = [
    url(r'^register/$', views.register_view, name='register'),
    url(r'^login/$', login, {'template_name': 'account/login.html'}, name='login'),
    url(r'^logout/$', logout, {'template_name': 'home.html',
        'next_page': '/login'}, name='logout'),
    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'^reset-password/$', password_reset, name='reset_password'),
    url(r'^reset-password/done/$', password_reset_done, name='reset_password_done'),
    url(r'^reset-password/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
        password_reset_confirm, name='reset_password_confirm'),
    url(r'^reset-password/complete/$', password_reset_complete, name='reset_password_complete'),

]

请帮我解决这个错误。我正在使用 django vesion 2.0.2。

提前致谢。

【问题讨论】:

    标签: python django django-views python-3.5


    【解决方案1】:

    这里有一个错字:你没有所谓的url_name = password_reset_done,你有reset_password_done

     url(r'^reset-password/done/$', password_reset_done, name='reset_password_done'),
    

    【讨论】:

    • 命名有什么问题?你能解释一下吗?
    • 在您的代码中的某个地方,您调用了'password_reset_done,但是这个名称不存在.. 正确的名称是reset_password_done。这就是为什么你得到Reverse for 'password_reset_done' not found
    • 我在 login.html 中只使用了reset_password。将reset_password_done 更改为password_reset_done,它的工作。尽管您的回答有效,但我不明白命名有什么问题。
    • 那么现在的问题是什么?如果您仍然遇到相同的问题,请使用您调用的模板更新您的问题reset_password
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 2019-04-06
    • 2019-08-13
    • 2019-11-04
    • 2021-04-21
    相关资源
    最近更新 更多