2017-01-26 8 views
0

はのは、私は以下のコードは、要求の形式を示しGET要求を持っていると仮定しましょうDjangoのデータの表示

例:表示データ上記

/?title1=xxx&message1=xxx&file1=xxx&...&titleN=xxx&messageN=xxx&fileN=xxx 

enter image description here

GETリクエストから

GETリクエストのリストをトラバースして、それぞれのリクエストNを自分のdivに表示するにはどうすればよいですか。

もちろん、これはジンジャーテンプレートとdjangoを使用しています。

私は実際には2つのパラメータのみを表示するためのソリューションを見つけます。

{% for key, value in GET.items %} 
     {% if forloop.counter0|divisibleby:2 %} 
       {% include "title_snippet.html" with title=value %} 
     {% else %} 
       {% include "message_snippet.html" with message=value %} 
     {% endif %} 

{% endfor %} 

このソリューションは、2つのパラメータのデータのみを表示します。しかし、私はそれがNのパラメータのために働くことを望みます。

?titre1=titre1&?message1=message1&?titre2=titre2&?message2=message2 
+2

[(TITLE1、メッセージ1)、(TITLE2、メッセージ2)、(TITLE3、message3)、...]'それをテンプレートに渡してndered –

答えて

2

これは簡単な方法でテンプレート側で解決されていません。あなたのテンプレートをレンダリングする間にいくつかのロジックを配置する必要があります。

コントローラ側。

def myview(request): 
    values = [] 
    for key, value in request.GET.items(): 
     if key.startswith("title"): 
      product = {} 
      index_value = key.replace("title","") 
      product["title"] = key 
      if request.GET.get("message"+index_value): 
       product["message"] = request.GET["message"+index_value] 
       values.append(product) 

    return render_to_response("template.html", {"all_values":values}) 

そして、あなたのテンプレート側でこれを解決する1つの方法は、あなたのviews.pyで反復可能な辞書で、テンプレート側でリクエストパラメータをソートするために正規表現を使用することです

+0

コード内にいくつかの問題があります。まず、forloop値と値= {}との間に、my_valuesではなくall_valuesというテンプレートの中に矛盾があります。 –

+0

最初の部分が見つかりませんでした。 2番目のもののために更新されました。 –

+0

forキー、request.GET.items()の値:3行目のvalue変数を使用しました。 4行目で、value = {}という名前の辞書を作成しました。 –

1

のようなものすることができます

{% for i in all_values %} 
<p> 
     {% if 'title' in i.keys.0 %} 
       {{ i.values.0 }} 
     {% endif %} 
</p> 
{% endfor%} 
あなたはこのような `としてタプルのリストにGETリクエストからデータを正規化することもできます
関連する問題