5

我試着這樣做:反向的URL基於Django的類視圖

在urls.py

... 
url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail', kwargs={'foo:''}) 
... 

在views.py

.. 
HttpResponseRedirect(reverse('video_detail', kwargs={'pk': id, 'foo':'bar'})) 
... 

但是這並未」 t似乎工作。我得到一個 Reverse'video_detail',其中帶有參數'()'和關鍵字參數'{'pk':13240L,'foo':'bar}'找不到。

但是這樣做的工作:

.... 
HttpResponseRedirect(reverse('video_detail', kwargs={'pk': id})) 
... 

即。從反向呼叫中刪除foo:bar。什麼是正確的方式來做到這一點,並在反向網址傳遞額外的參數?

回答

8

reverse是一個創建URL的函數。

,因爲你必須在你的URL模式只指定pk模式,你只能用pk作爲參數傳遞給reverse(它真的就沒有意義添加foo因爲生成的URL將是任何foo價值完全一樣)。您可以添加到foo URL模式或創建多個命名的網址,即:

url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail', kwargs={'foo':''}) 
url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail2', kwargs={'foo':'bar'}) 

url(r'^(?P<pk>\d+)/(?P<foo>\w+)/$', VideoDetailView.as_view(), name='video_detail')