Django RSS 订阅源问题
我正在开发一个博客应用,想要做一个简单的RSS订阅功能。不过,我遇到了一个奇怪的错误,这让我有点困惑。我大概知道问题出在哪里,但不明白为什么会这样。我的RSS Feed类代码如下:
class RSSFeed(Feed):
title = settings.BLOG_NAME
description = "Recent Posts"
def items(self):
return Story.objects.all().order_by('-created')[:10]
def link(self, obj):
return obj.get_absolute_url()
但是我收到了以下错误(完整的错误信息可以在http://dpaste.com/82510/查看):
AttributeError: 'NoneType' object has no attribute 'startswith'
这让我觉得它根本没有接收到任何对象。不过,我可以进入命令行,获取那些Story对象,并且可以顺利地遍历它们,返回绝对网址。所以看起来Feed的两个部分都能正常工作,只是在以feed形式显示时出现了问题。此外,我还添加了一些日志记录,可以确认在访问feeds链接时,items函数从未被调用。我希望我只是忽略了一些简单的东西。非常感谢大家的帮助。
2 个回答
1
你有没有在模型里定义
def get_absolute_url(self):
这个内容呢?
另外,最好在
if not obj:
raise FeedDoesNotExist
中处理一下,以避免在结果不存在时出现错误。
4
改成:
class RSSFeed(Feed):
title = settings.BLOG_NAME
link = "/blog/"
description = "Recent Posts"
def items(self):
return Story.objects.all().order_by('-created')[:10]
解决了。虽然我不太明白具体是怎么回事……不过没关系。 :)