Шаблоны Django URL с 2 параметрами - PullRequest
15 голосов
/ 05 июля 2011

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

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

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

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

Ответы [ 3 ]

12 голосов
/ 05 июля 2011

Где-то вдоль линии у меня появилась привычка называть их непосредственно в регулярном выражении, хотя, честно говоря, я не знаю, имеет ли это значение.

#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

12 голосов
/ 05 июля 2011

Предположим, вы хотите, чтобы 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 параметра.

8 голосов
/ 05 июля 2011

Я считаю, что каждая группа в регулярном выражении передается как параметр (и вы можете назвать их, если хотите):

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

Ознакомьтесь с примерами по адресу: https://docs.djangoproject.com/en/dev/topics/http/urls/. Вы также можете назвать свои группы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...