2011-01-04 7 views

cevap

125

Hayır, GET parametreleri URL'nin bir parçası olmadığından.

Basitçe sonuna ekleyin: Django için

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

1.5+

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

Aslında teknik öyleler. [RFC 1738] 'e göre (http://www.ietf.org/rfc/rfc1738.txt), bir HTTP URL aşağıdaki formu alır: http: // : /? . – naktinis

+0

@naktinis Bir HTTP URL'si, evet. Bir Django URL, [çok fazla değil] (https://docs.djangoproject.com/en/1.4/topics/http/urls/#how-django-processes-a-request). Yani, "URL" nin çeşitli tanımları için, her ikiniz de doğruyunuz: P –

+0

Bu, url'yi kesen sondaki eğik çizgi ile sonuçlanmaz, örneğin example.com/myview yerine "example.com/myview/? Office = foobar" gibi ? = foobar' ofisi mi? –

7

Birincisi, saçma bir cevap:

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

Ciddi anwser: Hayır, yapabilirsin 't. Django'nun URL çözücüsü, URL'nin yalnızca yol bölümüyle eşleşir, böylece {% url %} etiketi yalnızca URL'nin bu bölümünü tersine çevirebilir.

+0

Gerçekten. Bu da mantıklı geliyor ... Keşke bundan biraz daha zarif olsaydı. –

+0

Her zaman daha zarif bir özel etiket yazabilirsiniz - örneğin {% qpurl myview office = foobar%}. Bu ayrıca değerleri işleyebilir ve uygun şekilde kodlayabilir. – Spacedman

23

bir yolu mix-up akım parametrelerini yenisiyle:

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

değiştirmek ayarlarınızı istek değişkeni olması:

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP 

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

Ne yazık ki, bu liste – Arthur

+0

@ Arthur tarafından yazılmış parametrelerle çalışmıyor gibi görünüyor Djangos hatası mı? – eri

+0

Bu gerçekten zarif olurdu, ancak aynı zamanda GET params gelen bir önceki sayfanın "sayfa = 1" ekler gibi sayfalama için çalışmaz. – Florian