Réponses:
Non, car les paramètres GET ne font pas partie de l'URL.
Ajoutez-les simplement à la fin:
<a href="{% url myview %}?office=foobar">
Pour Django 1.5+
<a href="{% url 'myview' %}?office=foobar">
example.com/myview/?office=foobar
au lieu de example.com/myview?office=foobar
?
Une façon de mélanger les paramètres actuels avec de nouveaux:
{% url 'order_list' %}?office=foobar&{{ request.GET.urlencode }}
Modifiez vos paramètres pour avoir une variable de requête:
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
TEMPLATE_CONTEXT_PROCESSORS = TCP + (
'django.core.context_processors.request',
)
À utiliser urlencode
si l'argument est une variable
<a href="{% url 'myview' %}?office={{ some_var | urlencode }}">
ou bien des caractères spéciaux tels que des espaces peuvent casser votre URL.
Documentation: https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#urlencode
some_var
variable retourne vide dans le href mais est indiquée comme étant remplie si elle est utilisée ailleurs dans le modèle. v2.1
Tout d'abord, une réponse idiote:
{% url my-view-name %}?office=foobar
Une réponse sérieuse: non, vous ne pouvez pas. Le résolveur d'URL de Django correspond uniquement à la partie chemin de l'URL, ainsi la {% url %}
balise ne peut inverser que cette partie de l'URL.
Essaye ça:
{% url 'myview' office=foobar %}
Cela a fonctionné pour moi. Il fait essentiellement un retour sur ce lien et applique les arguments donnés.