Шаблон Django: заказ словарных элементов для отображения - PullRequest
0 голосов
/ 01 января 2011

Я создаю веб-сайт, который отображает выбранные пользователем видео на YouTube.Пользователь может ввести комментарий для каждого видео.

Я хочу отобразить (в этом порядке):

  1. Комментарий пользователя

  2. заголовок видео

Я уже сделал вид и создал следующий список элементов словаря.Каждый представляет одно видео.Я отправляю это на мою html-страницу:

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

«youtube_obj» - это объект, предоставленный YouTube, который содержит URL, заголовок, рейтинг и т. Д. «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 %}

Это работает, за исключением того, что, поскольку я не могу определить порядок словаря, я мог бы получить:

  1. Название видео

  2. Комментарий пользователя

Я думал, что смогу обойти это, назначив переменные (а затем напечатав значения в правильном порядке),и до сих пор шокируюсь тем фактом, что я не могу назначать переменные!

Итак, как я могу обойти это?Могу ли я выбрать нужный ключ / значение вместо того, чтобы перебирать элементы словаря - я пытался найти способы сделать это, но безуспешно.Есть еще идеи?(Мне нужно передать оба видеообъекта, так как позже мне может потребоваться больше информации, чем комментарий и заголовок.)

Ответы [ 2 ]

1 голос
/ 01 января 2011

Вы можете использовать ключи словаря напрямую:

{% 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 голосов
/ 01 января 2011

Просто итерируйте дважды. Один раз за видео и еще раз за комментарии. Или разделите их на собственные словари, которые передаются в шаблон. Это, вероятно, лучший вариант, так как вы избегаете повторения дважды по диктату. Для очень маленьких диктов это не будет проблемой. Для более крупных это может быть проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...