Відповіді:
Ні, оскільки параметри GET не є частиною URL-адреси.
Просто додайте їх до кінця:
<a href="{% url myview %}?office=foobar">
Для Джанго 1.5+
<a href="{% url 'myview' %}?office=foobar">
example.com/myview/?office=foobar
замість example.com/myview?office=foobar
?
Спосіб змішування поточних параметрів з новими:
{% 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',
)
Використовуйте, urlencode
якщо аргумент є змінною
<a href="{% url 'myview' %}?office={{ some_var | urlencode }}">
інакше спеціальні символи, такі як пробіли, можуть порушити вашу URL-адресу.
Документація: https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#urlencode
some_var
Змінна повертається порожньою в href, але показано, що вона заповнена, якщо вона використовується в іншому місці шаблону. v2.1
По-перше, дурна відповідь:
{% url my-view-name %}?office=foobar
Серйозний захисник: Ні, не можна. Дозвіл URL-адреси Django відповідає лише частині шляху URL-адреси, тому {% url %}
тег може змінювати лише ту частину URL-адреси.
Спробуйте це:
{% url 'myview' office=foobar %}
Це працювало для мене. В основному це робить зворотний зв'язок на цьому посиланні і застосовує дані аргументи.