2012-08-29 58 views
5

我有一個網址定義如下:自定義的URL /details/Django的{%URL%}不帶參數的標籤

url(r'^details/(?P<id>\d+)$', DetailView.as_view(), name='detail_view'), 

在我的模板,我希望能夠得到以下網址。

我試過{% url detail_view %},但是我得到一個錯誤,因爲我沒有指定參數id

我需要沒有ID的網址,因爲我會用JS追加它。

我該如何做到這一點?

+2

目的是什麼?如果沒有'id'參數,這個URL不能匹配,那麼爲什麼你要創建一個鏈接呢?也許你正試圖解決另一個問題,你的解決方案不是正確的? –

+0

我將使用JavaScript附加ID,但我希望將URL作爲js變量。 – AlexBrand

+1

你總是可以使用'id = -1'(反正你不希望是一個ID),並在需要時用最合適的ID代替最右邊的-1。 如果你問我,似乎對我非常討厭,但總比定義另一個網址好。 –

回答

6

只是這行添加到您的urls.py

url(r'^details/$', DetailView.as_view(), name='detail_view'), 

或:

url(r'^details/(?P<id>\d*)$', DetailView.as_view(), name='detail_view'), 

(這是一個清潔的解決方案 - 感謝托馬斯·奧羅斯科)

你需要在您的查看功能中指定id是可選的:

def view(request, id=None): 
+0

注意:這兩個urlpatterns將需要一個唯一的名稱,所以如果您命名這個「detail_view」,請將您的原始文件重命名爲「detail_view_with_id」。 –

+2

如果你打算修改視圖來接受一個可選參數,我想你可能會使參數爲可選:'r'^ details /(?P \ d *)$''。 –

+0

如何在模板「{%url detail_view%}」中指定id參數? – user1629366