2010-10-10 43 views
2

我想在Django中使用通用PasswordChangeForm和password_change視圖,並運行到NoReverseMatch錯誤。捕獲NoReverseMatch同時呈現與通用PasswordChangeForm Django視圖

這裏是我的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同時呈現:找不到'with'()'和關鍵字參數'{'post_change_redirect':u'/ home/userpage'}'的'django.contrib.auth.views.password_change'。

我在做什麼錯?我認爲如果在urls.py中聲明瞭一個可選變量,則可以通過將其指定爲命名參數來覆蓋它。謝謝!

回答

1

您定義URL的方式,post_change_redirect參數不是可選的 - 實際上它根本不被接受。該視圖總是會獲得您在urlconf中定義的硬編碼值。因此,當{% url %}標籤要查找接受post_change_redirect參數的password_change視圖時,它找不到一個,因爲您尚未定義一個參數。

如果你考慮你定義URL的方式,如果調用者想要覆蓋它,那麼參數會去哪裏?

+0

因此,在這種情況下執行post_change_redirect的唯一方法是使用(?P [whatever])將它傳遞到URL中 - 當我傳遞看起來像的東西時,它不會變得很難看網址本身? – Andrew 2010-10-10 18:17:37

+0

我最終重新實現了它,以便它接下來的請求 - 看起來像這樣更加一致。或者有更好的方法可以想到嗎? – Andrew 2010-10-10 18:18:30

相關問題