我有一个创建列表的功能:
import feedparser
import ssl
def rss(self):
if hasattr(ssl, '_create_unverified_context'):
ssl._create_default_https_context = ssl._create_unverified_context
rss = 'https://news.google.com/news?q=fashion&output=rss'
feed = feedparser.parse(rss)
articles = []
for entry in feed.entries:
articles.append({
"summary" : str(entry.summary),
"link" : str(entry.link),
"title" : str(entry.title),
})
return articles
关于文章的返回,我正试图在视图中显示它
我的views.py代码是:
def results(request):
rss_feed = RSS()
articles = rss_feed.rss()
return render(request, 'app/index.html', articles)
然后我的模板代码是:
<ul>
{% for article in articles %}
<li>{{ article['title'] }}</li>
{% empty %}
<li>Sorry, no athletes in this list.</li>
{% endfor %}
</ul>
但我一直收到错误消息:
/ app / results处的TemplateSyntaxError无法解析余数: &#39; [&#39;标题&#39;]&#39;来自&#39;文章[&#39;标题&#39;]&#39;
我创建了一个单独的脚本,只是打印到控制台,它打印没有问题。但是没有在Django中展示。
我是Python和Django的新手。不确定我错过了什么。
更新:
使用{{ article.title }}
会返回错误context must be a dict rather than list.
答案 0 :(得分:1)
当您将列表直接传递给渲染时,您将错误的上下文传递给返回函数。您必须将文章列表作为上下文字典的成员传递,如下所示:
return render(request, 'app/index.html', {"articles": articles})
在此之后,您可以将文章的标题称为
{{ article.title }}
在你的模板中。