Параметры Django и строки запроса

#python #python-3.x #django #url #django-views

Вопрос:

Предполагая, что у меня есть представление «get_item», как мне написать шаблон URL-адреса для следующего URL-адреса в стиле php?

 http://example.com/get_item/?id=2amp;type=fooamp;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 )

Мой взгляд:

 def get_item(request):
    id = request.GET.get('id', None)
    xxxxxx
 

Короче говоря, как мне реализовать шаблон URL-адреса в стиле Php с параметрами строки запроса в django?

Комментарии:

1. как насчет более приятного URL-адреса get_item/2/foo/bar и соответствующего ему? Таким образом, мы могли бы получить get_item/2/штаны/красный.

Ответ №1:

Сделайте свой узор таким:

 (r'^get_item/

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

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

Django автоматически обрабатывает строку запроса и делает ее пары параметров/значений доступными для представления. Настройка не требуется. Шаблон URL-адреса ссылается только на базовый URL-адрес, строка запроса неявна.

Однако для обычного стиля Django вы должны поместить идентификатор/слаг в базовый URL-адрес, а не в строку запроса! Используйте параметры запроса, например. для фильтрации представления списка, для определения текущей страницы и т.д...

Комментарии:

1. Спасибо за ответы. Теперь я все понимаю. Нет необходимости использовать re для обслуживания параметров в urls.py. Просто соберите параметры в представлениях, используя request.Get.get()

2. как это сделать в django 2 и 3

Ответ №2:

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

 (r'^get_item/

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



, get_item)
Мой взгляд:


Короче говоря, как мне реализовать шаблон URL-адреса в стиле Php с параметрами строки запроса в django?

Комментарии:

1. как насчет более приятного URL-адреса get_item/2/foo/bar и соответствующего ему? Таким образом, мы могли бы получить get_item/2/штаны/красный.

Ответ №1:

Сделайте свой узор таким:


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


Django автоматически обрабатывает строку запроса и делает ее пары параметров/значений доступными для представления. Настройка не требуется. Шаблон URL-адреса ссылается только на базовый URL-адрес, строка запроса неявна.

Однако для обычного стиля Django вы должны поместить идентификатор/слаг в базовый URL-адрес, а не в строку запроса! Используйте параметры запроса, например. для фильтрации представления списка, для определения текущей страницы и т.д...

Комментарии:

1. Спасибо за ответы. Теперь я все понимаю. Нет необходимости использовать re для обслуживания параметров в urls.py. Просто соберите параметры в представлениях, используя request.Get.get()

2. как это сделать в django 2 и 3

Ответ №2:

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


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

, get_item)
И по вашему мнению:


Django автоматически обрабатывает строку запроса и делает ее пары параметров/значений доступными для представления. Настройка не требуется. Шаблон URL-адреса ссылается только на базовый URL-адрес, строка запроса неявна.

Однако для обычного стиля Django вы должны поместить идентификатор/слаг в базовый URL-адрес, а не в строку запроса! Используйте параметры запроса, например. для фильтрации представления списка, для определения текущей страницы и т.д...

Комментарии:

1. Спасибо за ответы. Теперь я все понимаю. Нет необходимости использовать re для обслуживания параметров в urls.py. Просто соберите параметры в представлениях, используя request.Get.get()

2. как это сделать в django 2 и 3

Ответ №2:

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


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

, get_item)
Мой взгляд:


Короче говоря, как мне реализовать шаблон URL-адреса в стиле Php с параметрами строки запроса в django?

Комментарии:

1. как насчет более приятного URL-адреса get_item/2/foo/bar и соответствующего ему? Таким образом, мы могли бы получить get_item/2/штаны/красный.

Ответ №1:

Сделайте свой узор таким:


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


Django автоматически обрабатывает строку запроса и делает ее пары параметров/значений доступными для представления. Настройка не требуется. Шаблон URL-адреса ссылается только на базовый URL-адрес, строка запроса неявна.

Однако для обычного стиля Django вы должны поместить идентификатор/слаг в базовый URL-адрес, а не в строку запроса! Используйте параметры запроса, например. для фильтрации представления списка, для определения текущей страницы и т.д…

Комментарии:

1. Спасибо за ответы. Теперь я все понимаю. Нет необходимости использовать re для обслуживания параметров в urls.py. Просто соберите параметры в представлениях, используя request.Get.get()

2. как это сделать в django 2 и 3

Ответ №2:

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


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

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

, get_item)Мой взгляд:


Короче говоря, как мне реализовать шаблон URL-адреса в стиле Php с параметрами строки запроса в django?

Комментарии:

1. как насчет более приятного URL-адреса get_item/2/foo/bar и соответствующего ему? Таким образом, мы могли бы получить get_item/2/штаны/красный.

Ответ №1:

Сделайте свой узор таким:


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


Django автоматически обрабатывает строку запроса и делает ее пары параметров/значений доступными для представления. Настройка не требуется. Шаблон URL-адреса ссылается только на базовый URL-адрес, строка запроса неявна.

Однако для обычного стиля Django вы должны поместить идентификатор/слаг в базовый URL-адрес, а не в строку запроса! Используйте параметры запроса, например. для фильтрации представления списка, для определения текущей страницы и т.д…

Комментарии:

1. Спасибо за ответы. Теперь я все понимаю. Нет необходимости использовать re для обслуживания параметров в urls.py. Просто соберите параметры в представлениях, используя request.Get.get()

2. как это сделать в django 2 и 3

Ответ №2:

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


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

, get_item)И по вашему мнению:


Django автоматически обрабатывает строку запроса и делает ее пары параметров/значений доступными для представления. Настройка не требуется. Шаблон URL-адреса ссылается только на базовый URL-адрес, строка запроса неявна.

Однако для обычного стиля Django вы должны поместить идентификатор/слаг в базовый URL-адрес, а не в строку запроса! Используйте параметры запроса, например. для фильтрации представления списка, для определения текущей страницы и т.д…

Комментарии:

1. Спасибо за ответы. Теперь я все понимаю. Нет необходимости использовать re для обслуживания параметров в urls.py. Просто соберите параметры в представлениях, используя request.Get.get()

2. как это сделать в django 2 и 3

Ответ №2:

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


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

, get_item)Мой взгляд:


Короче говоря, как мне реализовать шаблон URL-адреса в стиле Php с параметрами строки запроса в django?

Комментарии:

1. как насчет более приятного URL-адреса get_item/2/foo/bar и соответствующего ему? Таким образом, мы могли бы получить get_item/2/штаны/красный.

Ответ №1:

Сделайте свой узор таким:


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


Django автоматически обрабатывает строку запроса и делает ее пары параметров/значений доступными для представления. Настройка не требуется. Шаблон URL-адреса ссылается только на базовый URL-адрес, строка запроса неявна.

Однако для обычного стиля Django вы должны поместить идентификатор/слаг в базовый URL-адрес, а не в строку запроса! Используйте параметры запроса, например. для фильтрации представления списка, для определения текущей страницы и т.д…

Комментарии:

1. Спасибо за ответы. Теперь я все понимаю. Нет необходимости использовать re для обслуживания параметров в urls.py. Просто соберите параметры в представлениях, используя request.Get.get()

2. как это сделать в django 2 и 3

Ответ №2:

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


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