【问题标题】:'QuerySet' object has no attribute 'url' when using feedparser in Django在 Django 中使用 feedparser 时,'QuerySet' 对象没有属性'url'
【发布时间】:2013-09-29 13:41:55
【问题描述】:

这是对bozo_exception in Django / feedparser的问题的后续处理

我想遍历模型/数据库中的许多提要,并将它们中的每一个都显示在 html 模板中。虽然我知道我需要在 html 模板中迭代思想 x.feed.entries,但我认为通过每个 rss 源的迭代需要在视图函数中进行,对吗?

def feed5(request):
    source = Feed.objects.all()
    for item in source.url:
        rss = feedparser.parse(item)
    context = {'rss': rss,}
    return render(request, 'feedreader/feed5.html', context)

给我这个错误:'QuerySet' 对象没有属性'url'。不知道该怎么办?

谢谢

【问题讨论】:

    标签: django feedparser


    【解决方案1】:

    嗯,它实际上没有 - Python 没有骗你。看,source 是一个QuerySet,一个类似列表的结果结构,而不是单个结果。如果你的 Feed 模型应该有一个 url 属性,那么在它上面查找它而不是查询集:

    for item in source:
        rss = feedparser.parse(item.url)
    

    【讨论】:

    • 好的,所以现在我在#views def feed5(request): source = Feed.objects.all() for item in source: rss = feedparser.parse(item.url) context = {'rss': rss} return render(request, 'feedreader/feed5.html', context) ##feed5.html 看起来像这样 <p><a href ="{{ rss.feed.link }}">{{ rss.feed.title }}</a></p> <ul> {% for r in rss.entries|slice:":15" %} <li> <a class="title" href="{{ r.link }}">{{ r.title }}</a> <br />{{ r.description|striptags }}</li> {% endfor %} </ul> 但该页面仅显示来自一个来源的 rss 条目,并忽略从 DB 中跳过所有其他条目。为什么?
    • 您只是将最后一项传递到上下文中,因为它是最后一个分配。遍历所有内容并不重要。相反,在循环中的某个列表 (li.append(rss)) 中构建数据,在上下文中传递整个列表并遍历模板中所有提要的项目(您需要嵌套 for-s)。
    • 知道了,谢谢! def feed5(request): source = Feed.objects.all() list = [] for item in source: rss = feedparser.parse(item.url) list.append(rss) context = {'rss': list} return render(request, 'feedreader/feed5.html', context)
    猜你喜欢
    • 2020-10-31
    • 1970-01-01
    • 2011-12-14
    • 2021-08-05
    • 2017-06-22
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多