这是我在Django中的views.py文件
def twitter_trend(request):
tweets, urls = main()
context = {
"tweets": tweets,
"urls": urls,
}
print(context)
return render(request, "feed/trends.html", context)
在我的模板中,我想同时打印趋势和网址的值。
这是我的模板文件
{% extends 'feed/base.html' %}
{% block content %}
<div class="row">
<div class="col-md-3"></div>
<div class="col-md-6">
<div class="thumbnail-center">
<font size="4">
<p>Trending Tweets</p>
</font>
</div>
{% for t,u in tweets,urls %}
{{ t }}{{ u }}<br>
{% endfor %}
</div>
<div class="col-md-3"></div>
</div>
{% endblock %}
但是当我运行服务器时,出现以下错误:
Exception Type: TemplateSyntaxError
Exception Value:
Could not parse the remainder: ',urls' from 'tweets,urls'
请帮助我如何迭代抛出两个列表?
答案 0 :(得分:2)
您可以在视图中使用zip
来创建一个同时迭代列表的迭代器:
def twitter_trend(request):
tweets, urls = main()
context = {
'tweets_urls': zip(tweets, urls),
}
print(context)
return render(request, "feed/trends.html", context)
然后在模板中,我们可以遍历tweets_url
:
{% extends 'feed/base.html' %}
{% block content %}
<div class="row">
<div class="col-md-3"></div>
<div class="col-md-6">
<div class="thumbnail-center">
<font size="4">
<p>Trending Tweets</p>
</font>
</div>
{% for t, u in tweets_urls %}
{{ t }}{{ u }}<br>
{% endfor %}
</div>
<div class="col-md-3"></div>
</div>
{% endblock %}
一个zip接收两个或更多流,并生成这些流的元组。例如:
>>> list(zip([1, 4, 2, 5], "ABCD"))
[(1, 'A'), (4, 'B'), (2, 'C'), (5, 'D')]
因此,我们创建元组,其中左边的项目是tweets
元素,右边的是urls
元素。
请注意,您必须确保{<1>}和tweets
的顺序“ 匹配”:第 i 个{{ 1}}元素与第 i 个urls
元素“相关”。 tweets
只是采用两个可迭代对象的顺序,它没有任何“ 魔术”来检查链接这些元素是否有意义。