2012-01-09 28 views
1
url(r'^foobar/(?P<field1>.+)/$', views.foo, name="foo"), 
url(r'^foobar/(?P<field2>.+)/$', views.bar , name="bar"), 

這些在django中是類似的模式url。但它需要不同的參數。我怎樣才能區分它們。如何區分兩個相似的模式網址?

回答

1

如果參數匹配相同的正則表達式(如上面的示例中所示),則需要將任何進一步的調度移動到視圖本身中。所以有兩個URL映射到相同的觀點,並做一些進一步的邏輯視圖,以決定下一步做什麼,例如:

def dispatcher(request, arg): 
     if arg == 1: 
      return fun1(request, arg) 
     else: 
      return fun2(request, arg) 

(注意這個例子可以中的URL進行:

url(r'^foobar/(?P<field1>1)/$', fun1) 
url(r'^foobar/(?P<field1>.*)/$', fun2) 

注意第一個URL是如何第一次嘗試

0

我想使它:

url(r'^foobar/(?P<name>foo)/(?P<field1>.+)/$', views.foo), 
url(r'^foobar/(?P<name>bar)/(?P<field1>.+)/$', views.bar), 

或者:

url(r'^foobar/(?P<name>foo|bar)/(?P<field1>.+)/$', views.foo), 

和:

def foo(request, name, field1): 
    if name = 'foo': 
     do_foo(request, field1) 
    else: 
     do_bar(request, field1) 
相關問題