template - ¿Es posible pasar los parámetros de consulta a través de la etiqueta de plantilla{% url%} de Django?
django templates settings (4)
Me gustaría agregar parámetros de solicitud a una etiqueta {% url %}
, como ?office=foobar
.
es posible? No puedo encontrar nada en eso.
No, porque los parámetros GET no son parte de la URL.
Simplemente agrégalos al final:
<a href="{% url myview %}?office=foobar">
Para Django 1.5+
<a href="{% url ''myview'' %}?office=foobar">
Primero, una respuesta tonta:
{% url my-view-name %}?office=foobar
Un artículo serio: No, no puedes. La resolución de URL de Django solo coincide con la parte de la ruta de la URL, por lo que la etiqueta {% url %}
solo puede revertir esa parte de la URL.
Una forma de confundir los parámetros actuales con uno nuevo:
{% url ''order_list'' %}?office=foobar&{{ request.GET.urlencode }}
Modifique su configuración para tener una variable de solicitud:
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
TEMPLATE_CONTEXT_PROCESSORS = TCP + (
''django.core.context_processors.request'',
)
Use urlencode
si el argumento es una variable
<a href="{% url ''myview'' %}?office={{ some_var | urlencode }}">
O bien, los caracteres especiales como espacios podrían romper tu URL.
La documentación de la url
no menciona un método que utiliza url
directamente: https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#url