[英]Django-way of specifying channel image in rss feed
在 rss 提要中指定頻道圖像的“django 方式”是什么? 我可以通過滾動我自己的 xml 來手動完成,但正在尋找一種正確的方法。
編輯dobrych 的解決方案在這里不太適用,因為我專門詢問 RSS 而不是 Atom 提要
找到了正確的做法。 如文檔所述,我需要通過從Rss201rev2Feed 繼承和覆蓋方法來創建自定義提要生成器
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"
對於有效的 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'}
我建議使用django-atompub來生成 Atom 提要。 它有非常好的 Class 抽象和很多選項,所以沒有任何 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())}]
我在我的開源照片博客 django 應用程序中使用了它。 您可以通過bitbucket repo查看示例。
完整的提要生成代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.