在rss feed中指定频道图像的“django-way”是什么?我可以通过滚动我自己的xml手动完成,但是正在寻找一种正确的方法。
修改的 dobrych的解决方案在这里不太适用,因为我专门询问RSS而不是Atom提要
答案 0 :(得分:10)
找到正确的方式。正如documentation所描述的那样,我需要通过从 Rss201rev2Feed 继承子类并重写方法来创建自定义Feed生成器
add_root_elements()像这样:
class RssFooFeedGenerator(Rss201rev2Feed):
def add_root_elements(self, handler):
super(RssFooFeedGenerator, self).add_root_elements(handler)
handler.addQuickElement(u"image", '',
{
'url': u"http://www.example.com/images/logo.jpg",
'title': u"Some title",
'link': u"http://www.example.com/",
})
class RssFooFeed(Feed):
feed_type = RssFooFeedGenerator
title = u"Foo items"
link = u"http://www.example.com/"
description = u"Some description"
答案 1 :(得分:7)
对于有效的RSS 2.0,您应该使用:
class ImageRssFeedGenerator(Rss201rev2Feed):
def add_root_elements(self, handler):
super(ImageRssFeedGenerator, self).add_root_elements(handler)
handler.startElement(u'image', {})
handler.addQuickElement(u"url", self.feed['image_url'])
handler.addQuickElement(u"title", self.feed['title'])
handler.addQuickElement(u"link", self.feed['link'])
handler.endElement(u'image')
class LastPublishedPromiseFeed(Feed):
link = 'http://www.example.com'
feed_type = ImageRssFeedGenerator
def feed_extra_kwargs(self, obj):
return {'image_url': self.link + '/image.jpg'}
答案 2 :(得分:4)
我建议将django-atompub用于Atom Feed生成。 它有很好的类抽象,有很多选项,所以没有任何XML黑客攻击,只有高级Python代码。
示例:
# Define feed class
class StreamFeed(Feed):
... [snipped]
def item_links(self, item):
return [{'rel': 'enclosure', 'href': item.file.url, 'length': item.file.size, 'type': item.mime.name},
{'rel': 'alternate', 'href': full_url(item.get_absolute_url())}]
我在我的开源photoblog django app中使用它。您可以通过bitbucket repo查看示例。