Как передать переменную из URL в представление в Django? - PullRequest
1 голос
/ 27 августа 2010

Простой вопрос.

Как передать переменную из URL в представление?Я следую примеру Date .

Моему представлению нужны аргументы:

def hours_ahead(request, offset):

У моего url.py есть это "

(r'^plus/\d{1,2}/$', hours_ahead),

Я знаю, что мне нужно передать еще один аргумент, но я не знаю, как получить номер из строки URL (например, 'time / plus / 4 /'. Что-то вроде этого?

(r'^plus/\d{1,2}/$', hours_ahead, offset=??),

Ответы [ 4 ]

1 голос
/ 27 августа 2010

Вы можете использовать Именованные группы в регулярном выражении

(r'^plus/(?P<offset>\d{1,2})/$', hours_ahead),
0 голосов
/ 04 октября 2012

Из главы 3 книги django :

Теперь, когда мы определили подстановочный знак для URL, нам нужен способ передачи этих подстановочных данных в представлениефункция, так что мы можем использовать одну функцию просмотра для любого произвольного смещения часов.Мы делаем это, помещая скобки вокруг данных в шаблоне URL, который мы хотим сохранить.В нашем примере мы хотим сохранить любой номер, который был введен в URL, поэтому давайте поставим круглые скобки вокруг \ d {1,2}, например:

(r'^time/plus/(\d{1,2})/$', hours_ahead),

Если вы знакомы с регулярными выражениями, вы будете здесь как дома;мы используем скобки для захвата данных из сопоставленного текста.

0 голосов
/ 27 августа 2010

Вы можете добавить дополнительные переменные, как это:

(r'^plus/\d{1,2}/$', {'hours' : 5},  hours_ahead),

С наилучшими пожеланиями!

0 голосов
/ 27 августа 2010

Я не уверен, что понимаю ваш вопрос ясно. Вот мой шанс ответить, основываясь на том, что я понял.

Добавление именованной группы регулярных выражений к вашей конфигурации URL должно помочь:

(r'^plus/(?P<offset>\d{1,2})/$', hours_ahead),

Это позволит вам сохранить существующее представление:

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