2013-08-18 78 views
0

假設我有這種模式:捕捉對象

Class animals(models.Model): 
    name = models.CharField(max_length = 20) 

,我做的這3個對象,說OB1,OB2,OB3與ob1.name =貓,ob2.name =狗,OB3。名稱=牛

現在,如果我有這樣的www.domain.com/catwww.domain.com/dog一個網址,如何捕獲從URL /cat/dog和對證類動物的對象的名稱?

我想實現一個視圖函數,它從url中取出一個參數,例如:object.name,並根據該對象執行。

任何幫助表示讚賞。

回答

1

使用named groups

可以使用命名的正則表達式組來捕獲URL 位,並將它們作爲關鍵字參數傳遞給視圖。

urls.py:

from django.conf.urls import patterns, url 

urlpatterns = patterns('', 
    url(r'^(?P<name>\w+)/$', 'my_view'),) 

views.py:

def my_view(request, name=None): 
    # get a model instance 
    animal = animals.objects.get(name=name) 

希望有所幫助。

+0

謝謝。但是有沒有辦法從網址中檢測對象?即時通訊在urls.py中嘗試類似這樣的內容:'url(animal.objects.value_list('name'),include('animalapp.urls')'。我想匹配來自url的'/ cat'或'/ dog'並將它與animal.objects.value_list('name')列表匹配。這可能嗎? –

+0

@HHH這個答案不能提供你要找的東西嗎? – Ben

+0

通常抓住所有的模式,像這樣'url(r'^(如果有可能將其改爲像'url(r'^ animal /(?P \ w +)/ $'','my_view')是不好的想法。 )'否則如果你必須擁有'/ cat','/ cow'等等,你可能需要在'my_view(request,name)'中移動你的url路由邏輯的一部分'這也是個壞主意 – twil