2013-08-18 56 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