使用通用 PasswordChangeForm Django 视图渲染时捕获 NoReverseMatch
Posted
技术标签:
【中文标题】使用通用 PasswordChangeForm Django 视图渲染时捕获 NoReverseMatch【英文标题】:Caught NoReverseMatch while rendering with generic PasswordChangeForm Django view 【发布时间】:2011-04-23 12:15:21 【问题描述】:我正在尝试在 Django 中使用通用 PasswordChangeForm 和 password_change 视图,但遇到了 NoReverseMatch 错误。
这是我的 urls.py:
(r'^change_pass/','django.contrib.auth.views.password_change', 'post_change_redirect':'/home'),
然后,我尝试从模板中调用以下内容:
<form action="% url django.contrib.auth.views.password_change post_change_redirect="/home/userpage" %" method="POST">
我明白了
渲染时捕获 NoReverseMatch:“django.contrib.auth.views.password_change”的反向参数“()”和关键字参数“'post_change_redirect': u'/home/userpage'”未找到。
我做错了什么?我想如果在 urls.py 中声明了一个可选变量,那么您可以在调用时通过将其指定为命名参数来覆盖它。谢谢!
【问题讨论】:
【参考方案1】:按照您定义 URL 的方式,post_change_redirect
参数不是可选的 - 实际上它根本不被接受。视图始终获得您在 urlconf 中定义的硬编码值。所以当% url %
标签去寻找一个接受post_change_redirect
参数的password_change 视图时,它找不到一个,因为你还没有定义一个。
如果您考虑一下您定义 URL 的方式,如果调用者想要覆盖它,参数会去哪里?
【讨论】:
因此,在这种情况下,执行 post_change_redirect 的唯一方法是使用 (?P以上是关于使用通用 PasswordChangeForm Django 视图渲染时捕获 NoReverseMatch的主要内容,如果未能解决你的问题,请参考以下文章