Django-способ задания изображения канала в rss-канале
Что такое "django-way" для указания изображения канала в rss-канале? Я могу сделать это вручную, скопировав собственный xml, но искал правильный способ сделать это.
Изменить
Решение dobrych не совсем применимо здесь, потому что я спрашивал конкретно о RSS, а не Atom.
Ответы
Ответ 1
Найден правильный способ сделать это. Как описывает документация, мне нужно было создать собственный генератор каналов путем подкласса из 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"
Ответ 2
Для действующего 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'}
Ответ 3
Я предлагаю использовать django-atompub для генерации Atom.
Он имеет очень приятную абстракцию класса с множеством опций, поэтому никаких хакеров 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.
Заполните код генерации корма.