我正在使用Django 1.2.3-3+squeeze1
與Debian squeeze。帶有password_change視圖的模板中的Django url錯誤
我正在嘗試在我的應用程序 中使用對應於django.contrib.auth.views.password_change
的Django密碼更改視圖。這 看起來應該是直截了當,但我一直有 問題。
爲了簡單和完整,我將指向我的應用程序文件 在線。該應用程序是bixfile。相應的Django項目 是bixproj。
在url.py相關線上 https://bitbucket.org/faheem/bixfile/src/49bcbab3a7be/urls.py#cl-65, 即
url(r'^password_change/$', 'django.contrib.auth.views.password_change', {'post_change_redirect':reverse('top_folders')}, name="password_change"),
這打破了其使用的任何模板。目前,我只是 使用它的在線模板calgb_base.html,其中包括在一堆 模板,包括頂級索引視圖的 https://bitbucket.org/faheem/bixfile/src/71de33d01f43/templates/calgb_base.html#cl-21 ,對應 模板 https://bitbucket.org/faheem/bixfile/src/71de33d01f43/templates/index.html。所述 線calgb_base.html是
<li><a class="side" href="{% url password_change %}">Password Change</a></li>
當我導航到對應於 https://bitbucket.org/faheem/bixfile/src/71de33d01f43/urls.py#cl-16 和 https://bitbucket.org/faheem/bixfile/src/71de33d01f43/views.py#cl-203 看到錯誤,與
Caught NoReverseMatch while rendering: Reverse for 'password_change'
with arguments '()' and keyword arguments '{}' not found.
開始我懷疑完整頂部index
視圖回溯是有用的,但我已將其粘貼在 http://paste.lisp.org/display/122996。
這個錯誤對於Apache 2.2和mod-wsgi以及 作爲內置Django測試服務器(見下文)都是可重現的。
如果我直接進入/ password_change /相對url,我會看到 密碼更改窗體如預期。
奇怪的是我寫的所有測試都通過測試這個 ,併產生了預期的結果。參見例如 testIndexUrl , testIndexView 和 test_password_change_url。
您可以
python manage.py test
如果你想嘗試重現此錯誤是比較容易的運行從bixproj
目錄下的測試。
首先下載該項目(bixproj
)和應用程序庫 (bixfile
)。所以
hg clone ssh://[email protected]/faheem/bixproj
hg clone ssh://[email protected]/faheem/bixfile
然後確保bixfile是在Python路徑中。將數據庫更改爲使用 sqlite。然後換
LOGIN_URL = '/'+BIXFILE_NAME+'/login/'
LOGIN_REDIRECT_URL= '/'+BIXFILE_NAME+'/'
到
LOGIN_URL = '/login/'
LOGIN_REDIRECT_URL= '/'
然後在本地機器上運行
python manage.py runserver
在
bixproj
目錄
,並打算爲默認網址 http://127.0.0.1:8000/
應該顯示錯誤。
我希望我可以產生一個極小的例子,如果 必要,但我真的希望這個錯誤是明顯的,我不 必須。提前致謝。
@Alasdair:我都嘗試'reverse_lazy'和硬編碼「post_change_redirect」的說法,而不是使用'reverse',如你所說。不幸的是,這些作品都沒有。我得到和以前完全一樣的錯誤。注意我在'urls.py'中以非常相似的方式在有問題的條目上方使用'reverse',沒有任何問題。你測試了這個建議的修復嗎? –
是的,我測試過了。當我用''/''替換'bixfiles.urls.py'中的所有**反轉url時,索引頁爲我工作。 – Alasdair
爲了澄清我以前的評論 - 我相信問題不是索引頁的url patter中的「reverse」,它是在任何** url模式中使用「reverse」。你有沒有嘗試徹底刪除你的網址反向?它爲我工作。 – Alasdair