Django и параметры строки запроса - PullRequest
36 голосов
/ 14 сентября 2010

Если у меня есть представление '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

Вкратце, как мне реализовать шаблон URL в стиле Php с параметрами строки запроса в django?

Ответы [ 3 ]

53 голосов
/ 14 сентября 2010

Создайте свой шаблон так:

(r'^get_item/$', get_item)

А по вашему мнению:

def get_item(request):
    id = int(request.GET.get('id'))
    type = request.GET.get('type', 'default')

Хотя для обычных подробных видов и т. Д. Вы должны поместить id / slug в URL, а не в строку запроса! Используйте параметры получения, например. для фильтрации представления списка, для определения текущей страницы и т. д. *

19 голосов
/ 14 сентября 2010

Вам просто нужно изменить шаблон URL на:

(r'^get_item/$', get_item)

И ваш код просмотра будет работать. В Django сопоставление с образцом URL используется для фактического пути, а не строки запроса.

0 голосов
/ 25 июля 2018

См. Этот шаблон

url(r'^get_item$', get_item)

И ваш взгляд будет выглядеть как

def get_item(request):
    id = int(request.Get.get('id'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...