Django RSS 订阅源问题

4 投票
2 回答
1906 浏览
提问于 2025-04-15 13:41

我正在开发一个博客应用,想要做一个简单的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]

解决了。虽然我不太明白具体是怎么回事……不过没关系。 :)

撰写回答