Параметры строки Django и строки запроса
Предполагая, что у меня есть представление 'get_item', как мне написать шаблон URL для следующего стиля php URL?
http://example.com/get_item/?id=2&type=foo&color=bar
(Я не использую стандартный "красивый" тип URL, то есть: http://example.com/get_item/2/foo/bar
как это не практично)
В частности, как заставить представление реагировать, когда пользователь вводит в браузере вышеупомянутое, и как мне собирать параметры и использовать их в моем представлении?
Я пытался, по крайней мере, правильно определить идентификационную часть, но безрезультатно. Представление не будет работать, когда я наберу это в моем браузере http://example.com/get_item?id=2
Мой шаблон URL:
(r'^get_item/id(?P<id>\d+)$', get_item)
Мой взгляд:
def get_item(request):
id = request.GET.get('id', None)
xxxxxx
Короче говоря, как мне реализовать Php стиль шаблона url с параметрами строки запроса в django?
Ответы
Ответ 1
Сделайте свой шаблон следующим образом:
(r'^get_item/$', get_item)
И на ваш взгляд:
def get_item(request):
id = int(request.GET.get('id'))
type = request.GET.get('type', 'default')
Хотя для обычных подробных представлений и т.д. вы должны поместить id/slug в url, а не в строку запроса! Используйте параметры получения, например. для фильтрации списка, для определения текущей страницы и т.д.
Ответ 2
Вам просто нужно изменить свой шаблон URL:
(r'^get_item/$', get_item)
И ваш код будет работать. В Django сопоставление шаблонов url используется для фактического пути, а не для строки запроса.
Ответ 3
Смотрите этот шаблон
url(r'^get_item$', get_item)
И ваш взгляд будет выглядеть
def get_item(request):
id = int(request.Get.get('id'))