我正在创建一个显示用户选择的YouTube视频的网站。用户可以为每个视频输入评论。
我想显示(按此顺序):
用户评论
视频标题
我已经创建了视图并创建了以下字典项列表。每个代表一个视频。我把它发送到我的html页面:
[
{"my_own_object": vid_obj1, "youtube_obj": obj1}
{"my_own_object": vid_obj2, "youtube_obj": obj2}
]
“youtube_obj”是youtube提供的对象,其中包含网址,标题,评级等。“my_own_object”包含用户的评论以及其他信息。
我遍历列表并获得一个词典/视频。没关系。然后我需要显示视频的信息:
{% 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 %}
这是有效的,除了因为我无法确定字典顺序,我可能最终得到:
视频标题
用户评论
我以为我可以通过分配变量(然后以正确的顺序打印值)来解决这个问题,并且仍然因为我无法分配变量而感到震惊!
那么,我该如何解决这个问题呢?我可以采取我需要的键/值而不是迭代字典项 - 我试图找到方法来做到这一点,但没有运气。还有其他想法吗? (我需要传递两个视频对象,因为我可能需要更多信息而不是评论和标题,稍后。)
答案 0 :(得分: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 %}
答案 1 :(得分:0)
只需迭代两次。一次为视频,再次为评论。或者,将它们拆分为自己的字典,然后传递给模板。这可能是一个更好的选择,因为你避免在dict上迭代两次。对于非常小的dicts,这将是没有问题的。对于较大的,它可能是一个问题。