2012-01-09 3 views

答えて

1

パラメータが同じ正規表現と一致する場合(上の例のように)、それ以上のディスパッチをビュー自体に移動する必要があります。その両方のURLが同じビューにマップし、例えば、次の何をすべきかを決定するためにビューのいくつかのより詳細なロジックを実行します:

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

(この例 URLで行うことができることに注意してください最初のURLが最初に試されているか

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

ノート

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) 
関連する問題