url(r'^foobar/(?P<field1>.+)/$', views.foo, name="foo"),
url(r'^foobar/(?P<field2>.+)/$', views.bar , name="bar"),
这些是django中类似的模式网址。但它需要不同的参数。我如何区分它们。
答案 0 :(得分:1)
如果参数匹配相同的正则表达式(如上例所示),则需要将任何进一步的调度移动到视图本身。所以让两个url映射到同一个视图,并在视图中做一些进一步的逻辑来决定接下来要做什么,例如:
def dispatcher(request, arg):
if arg == 1:
return fun1(request, arg)
else:
return fun2(request, arg)
(请注意,此示例可以在网址中完成:
url(r'^foobar/(?P<field1>1)/$', fun1)
url(r'^foobar/(?P<field1>.*)/$', fun2)
注意首先尝试第一个网址
答案 1 :(得分: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)