2011-01-01 6 views
0

私は、ユーザーが選んだyoutubeビデオを表示するウェブサイトを作っています。ユーザーは各動画にコメントを入力できます。Djangoテンプレート:表示用の辞書アイテムを注文する

私は(この順序で)表示したい:

  1. ユーザーコメント

  2. ビデオタイトル

私はすでにビューをしたし、次のリストを作成しました辞書項目。それぞれ1つのビデオを表します。私は私のhtmlページにこれを送る:

[ 
    {"my_own_object": vid_obj1, "youtube_obj": obj1} 
    {"my_own_object": vid_obj2, "youtube_obj": obj2} 
] 

は「youtube_obj」はURL、タイトル、格付けが含まれていますユーチューブで提供されたオブジェクト、など「my_own_objectは、」ユーザーのコメントだけでなく、他の情報が含まれています。

私はリストを繰り返し、1つの辞書/ビデオを取得します。それはいいです。それから私は、ビデオの情報を表示する必要があります。

{% for key,value in list.items %} 

    {% if key = "my_own_object" %} 
     <div> 
     <p>{{value.user_comment}}</p> 
     </div> 
    {% endif %} 
    {% if key = "youtube_obj" %} 
     <div> 
     <p> {{value.media.title.text}}</p> 
     </div> 
    {% endif %}     
{% endfor %} 

これは動作しますが、それを除いて、私は辞書の順序を決定することができないので、私は終わるかもしれない:

  1. ビデオタイトル

  2. ユーザーのコメント

私はこれを回避するために、 les(そして、適切な順序で値を表示しています)、変数を割り当てることができないという事実から、私はまだうんざりしています!

どうすればこの問題を回避できますか?私は辞書項目を反復するのではなく、必要なキー/値を抜き取ることができますか?これを行う方法を探しましたが、運はありませんでした。他のアイデア? (私は、後に、コメントやタイトルよりも多くの情報が必要になることがあり、両方のビデオオブジェクトを渡す必要があります。)

答えて

1

あなたが直接辞書のキーを使用することができます。

{% for item in list %} {# PS: don't use list as a variable name #} 
    <p>{{item.my_own_object.user_comment}}</p> 
    <p>{{item.youtube_obj.media.title.text}}</p> 
{% endfor %} 
+0

ありがとうございました!これは私が必要としていたものでした。そして私はリストを改名しました:) – dkgirl

0

は2回だけ繰り返します。一度ビデオのために、もう一度コメントのために。または、それらをテンプレートに渡す独自の辞書に分割します。これはおそらくより良い選択肢です.Dictを2度反復することは避けてください。非常に小さいディクテーションの場合、これは問題ありません。大きなものについては、問題になる可能性があります。

関連する問題