J'aimerais ajouter des paramètres de requête à une balise {% url %}
, Comme ?office=foobar
.
Est-ce possible? Je ne trouve rien dessus.
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">
Une façon de mélanger les paramètres actuels avec les 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',
)
Utilisez 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.
La documentation de url
ne mentionne pas de méthode utilisant url
directement: https://docs.djangoproject.com/fr/1.9/ref/templates/builtins/#url =
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. Par conséquent, la balise {% url %}
Ne peut que renverser cette partie de l'URL.
Essaye ça:
{% url 'myview' office=foobar %}
Cela a fonctionné pour moi. Fondamentalement, il fait l'inverse sur ce lien et applique les arguments donnés.