在我的仪表板功能中,我有个人资料。个人资料有标签。我要做的是将通过解析器的每个标记放入一个列表中。然后将该列表添加到模板中:
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
我做错了什么?感谢您的帮助。
答案 0 :(得分: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
答案 1 :(得分:2)
更改
rss.append(rss_result)
到
rss_result.append(rss)
您希望将项rss
附加到列表rss_result
。
如果您遇到这样的错误,尝试解析错误实际告诉您的内容会很有帮助:
异常值:对象没有属性'append'
在尝试调用属性时,似乎存在问题,追加,所以如果你回顾一下代码,你可以看到你试图追加某些内容的唯一地方,就是当你有rss.append(rss_result)
时。在这种情况下,您可以轻松地看到它正在尝试在rss
上调用追加,并且通过查看您的代码,您可以看到rss
是feedparser
输出的容器,并且您不会我想要附加任何内容,你希望将该对象附加到别的东西上。
在这种情况下,您希望将列表rss_result
和append
rss
变量放到此空列表的末尾。因此:rss_result.append(rss)
答案 2 :(得分:0)
你混淆了这一行:rss.append(rss_result) 应该是rss_result.append(rss)