2011-01-04 15 views

答えて

125

いいえ、GETパラメータはURLの一部ではないためです。

単に最後に追加します:

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

深刻anwser:いいえ、することができますジャンゴ1.5+

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

まあ、技術的に彼らがいます。 [RFC 1738](http://www.ietf.org/rfc/rfc1738.txt)によると、HTTP URLの形式は次のとおりです。http:// /。 – naktinis

+0

@naktinis HTTP URLです。はい。 DjangoのURL、[それほどではありません](https://docs.djangoproject.com/en/1.4/topics/http/urls/#how-django-processes-a-request)。したがって、 "URL"のさまざまな定義については、どちらも正しいです:P –

+0

これは、example.com/myviewの代わりに 'example.com/myview/?office = foobar'のように、後続のスラッシュがURLを中断しないようにします?office = foobar'? –

7

まず、愚かな答えを

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

を't。 DjangoのURLリゾルバは、URLののパスと一致するだけです。したがって、{% url %}タグはURLのその部分を逆順にすることができます。ミックスアップするために、現在のパラメータを新しいものと

+0

確かに。それは意味があります...私はちょうどそれがそれより少しエレガントだったらいいと思う。 –

+0

あなたはいつもよりエレガントなカスタムタグ - {%qpurl myview office = foobar%}を書くことができます。これは、値を処理して適切にエンコードすることもできます。 – Spacedman

23

方法:

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

リクエスト変数を持つように設定を変更します。

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP 

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

残念ながら、これはリストであるパラメータでは動作しないようです – Arthur

+0

@Arthur Djangosのバグですか? – eri

+0

実際にはエレガントですが、GETパラメータから再び前のページの "page = 1"を追加するため、ページングでは機能しません。 – Florian

9

使用urlencode引数が変数

ある場合
<a href="{% url 'myview' %}?office={{ some_var | urlencode }}"> 

またはそれ以外スペースのような文字はあなたのURLを壊すかもしれません。 url

ドキュメントは直接urlを用いる方法を言及していない:https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#url

関連する問題