【问题标题】:Django password_change view raising NoReverseMatch exceptionDjango password_change 视图引发 NoReverseMatch 异常
【发布时间】:2017-09-07 19:02:55
【问题描述】:
app_name = "myadmin"

urlpatterns = [
    url(r'^change-password/$', auth_views.password_change,
        { 'template_name': 'myadmin/password_change',  'current_app': 'myadmin',  },
        name='password_reset'
        ),

    url(r'^password-change-done/$', auth_views.password_change_done,
        {'current_app': 'myadmin'},
        name='password_change_done'
        ),
]

当我访问127.0.01:8001/myadmin/change-password 时,它会引发以下错误:

NoReverseMatch/myadmin/change-password/ 反向为 'password_change_done' 带有参数“()”和关键字参数“{}” 未找到。尝试了 0 个模式:[]

如您所见,我已经将app_name 传递给password_change() 视图,但它没有到达视图内部。

【问题讨论】:

    标签: python django


    【解决方案1】:

    您正在为您的 myadmin 应用程序命名空间。因此,您应该使用

    reverse('myadmin:password_change_done')
    

    更多关于命名空间here。

    【讨论】:

    • 如果我更新项目,这很糟糕,整个应用程序将中断,我必须再次这样做。如果这很糟糕,特别是当其他应用程序也在使用password_change_done 视图时。
    • 有没有办法使用 url() 将应用名称传递给这个视图?
    猜你喜欢
    • 2016-11-09
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    相关资源
    最近更新 更多