Подтвердить что ты не робот

Django url pattern с двумя параметрами

Это просто и очевидно, но я не могу понять:

У меня есть следующая функция представления, объявленная в urls.py

 (r'^v1/(\d+)$', r'custom1.views.v1'),

Первоначально я передавал единственный параметр функции просмотра v1. Я хочу изменить его, чтобы передать 2 параметра. Как объявить запись в urls.py для принятия двух параметров?

4b9b3361

Ответ 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