Django模板:对要显示的词典项进行排序

Django模板:对要显示的词典项进行排序,django,django-templates,Django,Django Templates,我正在制作一个网站,显示用户选择的youtube视频。用户可以为每个视频输入注释 我想(按此顺序)显示: 用户评论 视频标题 我已经创建了视图,并创建了以下字典项列表。每一个代表一个视频。我将其发送到我的html页面: [ {"my_own_object": vid_obj1, "youtube_obj": obj1} {"my_own_object": vid_obj2, "youtube_obj": obj2} ] “youtube_obj”是youtube提供的对象,其

我正在制作一个网站,显示用户选择的youtube视频。用户可以为每个视频输入注释

我想(按此顺序)显示:

  • 用户评论

  • 视频标题

  • 我已经创建了视图,并创建了以下字典项列表。每一个代表一个视频。我将其发送到我的html页面:

    [
        {"my_own_object": vid_obj1, "youtube_obj": obj1} 
        {"my_own_object": vid_obj2, "youtube_obj": obj2}
    ]
    
    “youtube_obj”是youtube提供的对象,其中包含url、标题、评级等。“我自己的_对象”包含用户的评论以及其他信息

    我反复浏览列表,得到一个字典/视频。那很好。然后我需要显示视频的信息:

    {% 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 %}
    
    {%用于键,值位于list.items%}
    {%if key=“我自己的对象”%}
    {{value.user_comment}}

    {%endif%} {%if key=“youtube_obj”%} {{value.media.title.text}

    {%endif%} {%endfor%}
    这是可行的,但由于我无法确定字典顺序,因此可能会导致:

  • 视频标题

  • 用户评论

  • 我想我可以通过分配变量(然后按正确的顺序打印值)来解决这个问题,但我仍然无法分配变量


    那么,我怎样才能避开这个问题呢?我是否可以提取所需的键/值,而不是在字典项上进行迭代?我试图寻找实现这一点的方法,但运气不佳。还有其他想法吗?(我需要传递这两个视频对象,因为我以后可能需要比注释和标题更多的信息。)

    您可以直接使用字典键:

    {% 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 %}
    
    {%for list%}{#PS:不要将list用作变量名#}
    {{item.my_own_object.user_comment}}

    {{item.youtube_obj.media.title.text}

    {%endfor%}
    只需迭代两次。一次是视频,一次是评论。或者,将它们拆分为各自的字典,并传递给模板。这可能是一个更好的选择,因为您可以避免在dict上重复两次。对于非常小的dict,这不会有问题。对于较大的,这可能是一个问题。

    谢谢!这完全是我需要的。我已将列表重命名为:)