2017-12-16 8 views
-1

私はDjangoで遊んでいて、次の質問があります。GETはdjangoの方法を要求します

私はいくつかのテンプレートに検索フォームを持っている:

例えば、以下の要求を形成し、
<form role="search" method="get" action="{% url 'polls:search' %}"> 
.... 
<\form> 

http://127.0.0.1:8000/search/?text=dog&year=2017 

view.pyファイルに対応する関数はこれでうまく動作します要求。

<a href="{% url 'polls:search' %}?text=&year=2017"> 

それは少し醜いと、おそらく間違って見えます:私は、私は次の操作を行い

http://127.0.0.1:8000/search/?text=&year=2017 

につながるリンクを作成する必要があり、他のテンプレートの中でいくつかの点で

。 別の方法がありますか?例えば、Djangoのやり方でGETリクエストを形成することが可能と

されています:

http://127.0.0.1:8000/search/dog/2017 

だから、他のテンプレートでは、1は、検索語がかなりあるべき、意味的に

<a href="{% url 'polls:search' %} text='' year=2017"> 

答えて

1

を書くことができますパラメータを取得します。

# some_installed_app/templatetags/my_tags.py 
from django.http import QueryDict 
from django import template 

register = template.Library() 

@register.simple_tag 
def querystring(**kwargs): 
    d = QueryDict(mutable=True) 
    d.update(kwargs) 
    return d.urlencode() 

、テンプレートで、あなたが行うことができます:あなたは、キーワード引数を取り、適切なURLエンコーディングを処理するためにQueryDictを使用する単純なテンプレートタグを記述することができ

# template.html 
{% load my_tags %} 
<a href="{% url 'polls:search' %}?{% querystring text='' year=2017 %}"> 
# http://127.0.0.1:8000/search/?text=&year=2017 

それができるようになります例:

...{% querystring text='foo bar' %} 
# ...text=foo+bar 
関連する問題