2011-01-04 10 views

Respuesta

125

No, porque los parámetros GET no son parte de la URL.

simplemente añadirlos a la final:

<a href="{% url myview %}?office=foobar"> 

Para Django 1.5+

<a href="{% url 'myview' %}?office=foobar"> 
+9

Bueno, técnicamente son. De acuerdo con [RFC 1738] (http://www.ietf.org/rfc/rfc1738.txt), una URL HTTP toma la forma: http: // : /? . – naktinis

+0

@naktinis Una URL HTTP, sí. Una URL de Django, [no tanto] (https://docs.djangoproject.com/en/1.4/topics/http/urls/#how-django-processes-a-request). Entonces, para varias definiciones de "URL", ambos son correctos: P –

+0

¿Esto no da como resultado la barra final que interrumpe la url, como 'example.com/myview/? Office = foobar' en lugar de' example.com/myview ? office = foobar'? –

7

En primer lugar, una respuesta tonta:

{% url my-view-name %}?office=foobar 

Un anwser grave: No, no puede 't. La resolución de URL de Django solo coincide con la ruta de la URL, por lo que la etiqueta {% url %} solo puede revertir esa parte de la URL.

+0

De hecho. Eso tiene sentido también ... Solo desearía que fuera un poco más elegante que eso. –

+0

Siempre puede escribir una etiqueta personalizada más elegante - {% qpurl myview office = foobar%} por ejemplo. Esto también podría procesar los valores y codificarlos adecuadamente. – Spacedman

23

Una manera de mezclar los parámetros actuales con uno nuevo:

{% url 'order_list' %}?office=foobar&{{ request.GET.urlencode }} 

modificar su configuración para tener variable request:

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP 

TEMPLATE_CONTEXT_PROCESSORS = TCP + (
    'django.core.context_processors.request', 
) 
+1

Desafortunadamente esto no parece funcionar con los parámetros que son listas – Arthur

+0

@Arthur ¿Es Djangos error? – eri

+0

que sería elegante, pero no funciona para paginación, ya que también agrega la "página = 1" de la página anterior nuevamente desde los parámetros GET. – Florian

Cuestiones relacionadas