如何在django模板中显示字典列表? (无法解析剩余部分)

时间:2017-07-10 12:16:16

标签: python django python-3.x django-templates django-views

我有一个创建列表的功能:

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.

1 个答案:

答案 0 :(得分:1)

当您将列表直接传递给渲染时,您将错误的上下文传递给返回函数。您必须将文章列表作为上下文字典的成员传递,如下所示:

return render(request, 'app/index.html', {"articles": articles})

在此之后,您可以将文章的标题称为

{{ article.title }}

在你的模板中。