0

在我的仪表板功能中,我有一个配置文件。配置文件有标签。我想要做的是将通过解析器的每个标签放入一个列表中。然后将该列表添加到模板中:

import feedparser
rss_result = []
tags = profile.tags.all()
for tag in tags:
    rss = feedparser.parse(tag.tag_rss) #tag.tag_rss is a url string  
    rss.append(rss_result) 
context['tag_rss'] = rss_result

它抛出这个错误:Exception Value: object has no attribute 'append

我究竟做错了什么?提前感谢您的帮助。

4

3 回答 3

5

我想你是故意的rss_result.append(rss)。你倒过来了。

此外,您可以使用列表理解用更少的行来编写它。不过,完全取决于你。

import feedparser
tags = profile.tags.all()
context['tag_rss'] = [feedparser.parse(tag.tag_rss) for tag in tags]
# if you don't need to re-use rss_result, this should work okay
于 2013-03-01T21:09:20.507 回答
2

改变

rss.append(rss_result)

rss_result.append(rss)

您想将该项目附加rss到列表中,即rss_result.

当您遇到这样的错误时,尝试解析错误实际上告诉您的内容会很有帮助:

异常值:对象没有“附加”属性

尝试调用属性 append 时,这里似乎存在问题,因此,如果您回顾代码,您会看到您尝试附加某些内容的唯一位置,即当您拥有rss.append(rss_result). 在这种情况下,您可以很容易地看到它正在尝试调用 append on rss,并且通过查看您的代码,您可以看到这rssfeedparser输出的容器,并且您不想附加任何内容,您希望该对象是附加到别的东西上。

在这种情况下,您希望将列表、rss_result和变量带到此空列表的末尾appendrss因此:rss_result.append(rss)

于 2013-03-01T21:10:09.730 回答
0

你混淆了这一行: rss.append(rss_result) 应该是 rss_result.append(rss)

于 2013-03-01T21:10:36.077 回答