url(r'^foobar/(?P<field1>.+)/$', views.foo, name="foo"),
url(r'^foobar/(?P<field2>.+)/$', views.bar , name="bar"),
これはdjangoの類似パターンURLです。しかし、それは異なるパラメータを取る。どのように私はそれらを区別することができます。類似のパターンURLを区別するにはどうすればよいですか?
url(r'^foobar/(?P<field1>.+)/$', views.foo, name="foo"),
url(r'^foobar/(?P<field2>.+)/$', views.bar , name="bar"),
これはdjangoの類似パターンURLです。しかし、それは異なるパラメータを取る。どのように私はそれらを区別することができます。類似のパターンURLを区別するにはどうすればよいですか?
パラメータが同じ正規表現と一致する場合(上の例のように)、それ以上のディスパッチをビュー自体に移動する必要があります。その両方の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)
ノート
は、私はそれをするだろう:
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)