Как различить два одинаковых шаблона URL? - PullRequest
1 голос
/ 09 января 2012
url(r'^foobar/(?P<field1>.+)/$', views.foo, name="foo"),
url(r'^foobar/(?P<field2>.+)/$', views.bar , name="bar"),

Это аналогичный шаблон URL в Django.Но это принимает разные параметры.Как я могу различить их.

Ответы [ 2 ]

1 голос
/ 09 января 2012

, если параметры соответствуют одному и тому же регулярному выражению (как в вашем примере выше), вам нужно будет перенести любую дальнейшую диспетчеризацию в само представление. поэтому оба URL-адреса отображаются на одно и то же представление и выполняют дополнительную логику в этом представлении, чтобы решить, что делать дальше, например ::100100

 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 голосов
/ 09 января 2012

Я бы сделал это:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...