#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-адресов используется для фактического пути, а не для строки запроса.