Odpowiedzi:
Nie, ponieważ parametry GET nie są częścią adresu URL.
Po prostu dodaj je na końcu:
<a href="{% url myview %}?office=foobar">
Dla Django 1.5+
<a href="{% url 'myview' %}?office=foobar">
example.com/myview/?office=foobar
zamiast example.com/myview?office=foobar
?
Sposób na pomieszanie aktualnych parametrów z nowymi:
{% url 'order_list' %}?office=foobar&{{ request.GET.urlencode }}
Zmodyfikuj ustawienia, aby uzyskać zmienną żądania:
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
TEMPLATE_CONTEXT_PROCESSORS = TCP + (
'django.core.context_processors.request',
)
Użyj, urlencode
jeśli argument jest zmienną
<a href="{% url 'myview' %}?office={{ some_var | urlencode }}">
w przeciwnym razie znaki specjalne, takie jak spacje, mogą przerwać adres URL.
Dokumentacja: https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#urlencode
some_var
zmienna zwraca pustą wartość w href, ale jest wyświetlana jako wypełniona, jeśli zostanie użyta w innym miejscu szablonu. v2.1
Najpierw głupia odpowiedź:
{% url my-view-name %}?office=foobar
Poważna odpowiedź: Nie, nie możesz. Program do rozpoznawania adresów URL w Django dopasowuje tylko część ścieżki adresu URL, więc {% url %}
tag może odwrócić tylko tę część adresu URL.
Spróbuj tego:
{% url 'myview' office=foobar %}
U mnie to zadziałało. Zasadniczo robi to odwrotnie na tym łączu i stosuje podane argumenty.