Django url pattern с двумя параметрами
Это просто и очевидно, но я не могу понять:
У меня есть следующая функция представления, объявленная в urls.py
(r'^v1/(\d+)$', r'custom1.views.v1'),
Первоначально я передавал единственный параметр функции просмотра v1.
Я хочу изменить его, чтобы передать 2 параметра. Как объявить запись в urls.py для принятия двух параметров?
Ответы
Ответ 1
Я считаю, что каждая группа в регулярном выражении передается как параметр (и вы можете назвать их, если хотите):
(r'^v1/(\d+)/(\d+)/$', r'custom1.views.v1')
Ознакомьтесь с примерами по адресу: https://docs.djangoproject.com/en/dev/topics/http/urls/. Вы также можете назвать свои группы.
Ответ 2
Предположим, что URL-адрес должен выглядеть как v1/17/18
и получить два параметра 17
и 18
, вы можете просто объявить шаблон как:
(r'^v1/(\d+)/(\d+)$', r'custom1.views.v1'),
Убедитесь, что v1
принимает еще два аргумента в дополнение к объекту запроса:
def v1 ( request, a, b ):
# for URL 'v1/17/18', a == '17' and b == '18'.
pass
первый пример в документации о диспетчере URL содержит несколько шаблонов, последний из которых принимает 2 и 3 параметра.
Ответ 3
Где-то вдоль линии я получил привычку называть их непосредственно в регулярном выражении, хотя, честно говоря, я не знаю, имеет ли это значение.
#urls:
(r'^v1/(?P<variable_a>(\d+))/(?P<variable_b>(\d+))/$', r'custom1.views.v1')
#views:
def v1(request, variable_a, variable_b):
pass
Кроме того, это очень Django для завершения URL с завершающим косой чертой - Django Design Philosophy, FYI