Можно ли передать параметры запроса через шаблонный тег Django {% url%}? - PullRequest
105 голосов
/ 04 января 2011

Я бы хотел добавить параметры запроса в тег {% url %}, например ?office=foobar.

Возможно ли это? Я ничего не могу найти на нем.

Ответы [ 5 ]

151 голосов
/ 04 января 2011

Нет, поскольку параметры GET не являются частью URL.

Просто добавьте их в конец:

<a href="{% url myview %}?office=foobar">

Для Django 1.5 +

<a href="{% url 'myview' %}?office=foobar">
30 голосов
/ 02 марта 2014

Способ смешивания текущих параметров с новыми:

{% url 'order_list' %}?office=foobar&{{ request.GET.urlencode }}

Измените ваши настройки, чтобы иметь переменную запроса:

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP

TEMPLATE_CONTEXT_PROCESSORS = TCP + (
    'django.core.context_processors.request',
)
18 голосов

Используйте urlencode, если аргумент является переменной

<a href="{% url 'myview' %}?office={{ some_var | urlencode }}">

или специальные символы, такие как пробелы, могут сломать ваш URL.

В документации url не упоминается метод, использующий url напрямую: https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#url

8 голосов
/ 04 января 2011

Во-первых, глупый ответ:

{% url my-view-name %}?office=foobar

Серьезный ответ: нет, вы не можете.Средство распознавания URL-адресов Django соответствует только части URL-адреса path , поэтому тег {% url %} может обратить только эту часть URL-адреса.

0 голосов
/ 27 июня 2019

Попробуйте это:

{% url 'myview' office=foobar %}

Это сработало для меня.Он в основном делает обратное для этой ссылки и применяет заданные аргументы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...