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

Параметры строки 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?

4b9b3361

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