Можно ли передавать параметры запроса через тег шаблона Django {% url%}?

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

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

Ответ 1

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

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

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

Для Django 1.5 +

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

Ответ 2

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

{% 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',
)

Ответ 3

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

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

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

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

Ответ 4

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

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

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

Ответ 5

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

{% url 'myview' office=foobar %}

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