我正在尝试在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中声明了一个可选变量,那么你可以在调用时通过将其指定为命名参数来覆盖它。谢谢!
答案 0 :(得分:1)
您定义URL的方式,post_change_redirect
参数不是可选的 - 事实上它根本不被接受。视图始终获取您在urlconf中定义的硬编码值。因此,当{% url %}
标记查找接受post_change_redirect
参数的password_change视图时,它找不到一个,因为您尚未定义一个。
如果你考虑一下你定义URL的方式,如果调用者想要覆盖它,那么参数会去哪里?