【问题标题】:Django nested dictionary to display in templatesDjango 嵌套字典显示在模板中
【发布时间】:2018-02-20 17:14:31
【问题描述】:

我有一本像这样的字典

dict = {
'https://i.redd.it/4d87ifm2mch01.jpg': 'https://reddit.com/7yv1d8', 
'https://i.redd.it/ru0bq0jpr9h01.jpg': 'https://reddit.com/7ys0l3',
 'videos': {'https://gfycat.com/ifr/selfassuredinfinitehochstettersfrog'},..
}

'videos' 将值存储为一组,因此我不会有重复的 url,而且很方便。 但是我遇到了一个问题,如何在模板中显示嵌套字典? 我现在就这样

{% for keys,values in data.items%}

{% for i,j in keys.items %}
<iframe src='{{j}}' frameborder='0' scrolling='no' allowfullscreen width='300' height='300'></iframe>


<a class="thumbnail" href="{{values}}"><img src="{{keys}}" width="100px" height="66px" border="1" /><span><img src="{{keys}}" /><br />whatever.</span></a>
<br />

我希望将 'videos' 值作为图像存储在 &lt;iframe&gt; 和其他值中。

【问题讨论】:

标签: python django django-templates


【解决方案1】:

keys 上调用.items 可能会引发错误,因为它们是字符串,我不知道data 包含什么,但是假设它被发送到您视图中的模板,例如:

return render(request, "myapp/index.html", {"data": dict})

然后您可以检查key equals 是否为"videos",并遍历集合:

{% for key, value in data.items %}
  {% ifequal key "videos" %}
  <iframe ...>
    {% for url in value %}
      <a class="thumbnail" href="{{ url }}">{{ url }}</a>
    {% endfor %}
  </iframe>
  {% endifequal %}
{% endfor %}

【讨论】:

  • 抱歉回复晚了,我今天只能动手,但不幸的是模板出现错误,我只是注释掉了我的代码并尝试复制粘贴到我的模板中。我的 views.py 完全按照您指出的方式返回。 Invalid block tag on line 56: 'endifequal', expected 'empty' or 'endfor'. 只是指出,如果我只将它们包含在 &lt;img&gt; 标记中并忽略 &lt;igrame&gt; 标记,它确实会显示图像
  • @nexla 你确定你正确地复制了上面的 sn-p 吗?据我所见,我认为您不会收到错误消息说缺少结束标签。顺便说一句,那里有 2 个 for 循环。一种用于遍历字典,一种用于遍历videos 集合。
  • 我认为问题在于我在字典中使用 set 并将我重定向到 value url。我尝试使用不同的数据类型,它确实像一个字符串一样工作,但是我会在解析多个 url 时遇到麻烦,但我会想办法的。所以是的,你的回答是正确的,这是我的错 :) 谢谢!
  • 实际上,我设法将其保留为一组。我做了什么,我通过了' '.join(set object),瞧,这是一个有效的网址,对于那些将来可能会遇到同样问题的人来说:)
猜你喜欢
  • 2014-03-04
  • 2021-01-16
  • 2013-09-19
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 2021-12-20
  • 2011-10-11
  • 2020-08-03
相关资源
最近更新 更多