2011-12-21 35 views
8

我剛開始學習python和django,我有一個問題。 我得到了將功能視圖轉換爲基於類的視圖的任務。但我的鏈接現在不工作。Django帶參數的反向網址到基於類的視圖

這些都是urls.py:

url(r'^$', ContactIndex.as_view()), 
url(r'^add$', ContactAdd.as_view()), 
url(r'^([0-9]+)/update$', ContactUpdate.as_view()), 
url(r'^([0-9]+)/view$', ContactView.as_view()), 

這是我的鏈接:

{% url rtr_contact.views.ContactView contact.id %} 

但這並不工作,它說:

Caught NoReverseMatch while rendering: Reverse for 'rtr_contact.views.ContactView' with arguments '(20L,)' and keyword arguments '{}' not found. 
+1

你應該以斜線後綴的URL模式。這是Django的一個標準,也使得其他程序更容易使用它(不需要進入血腥的細節......) – jpic 2011-12-21 11:21:57

回答

17

爲了使URL倒車方便,我建議你總是name your url patterns

url(r'^$', ContactIndex.as_view(), name="contact_index"), 
url(r'^add$', ContactAdd.as_view(), name="contact_add"), 
url(r'^([0-9]+)/update$', ContactUpdate.as_view(), name="contact_update"), 
url(r'^([0-9]+)/view$', ContactView.as_view(), name="contact_view"), 

然後在模板:

{% url contact_view contact.id %} 
+1

謝謝,它工作。我希望django的文檔更容易。 – user769498 2011-12-21 10:56:59

+2

我認爲總的來說,Django文檔非常好。關於基於類的觀點的部分有點空白,但希望將來可以充實。 – Alasdair 2011-12-21 11:06:17

+2

這是未來,基於類的通用視圖文檔仍然不足。謝謝你的回答 - 它也幫助我。 – tatlar 2013-01-16 21:53:25