Django-способ указания изображения канала в RSS-канале - PullRequest
10 голосов
/ 19 марта 2009

Что такое «путь django» для указания изображения канала в ленте RSS? Я могу сделать это вручную, свернув свой собственный xml, но искал правильный способ сделать это.

Редактировать Решение Добрича здесь не совсем применимо, потому что я спрашивал конкретно о RSS, а не о каналах Atom

Ответы [ 3 ]

10 голосов
/ 30 марта 2009

Нашел правильный способ сделать это. Как описывает документация , мне нужно было создать собственный генератор каналов с помощью подкласса 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"
7 голосов
/ 17 января 2012

Для действительного 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'}
4 голосов
/ 19 марта 2009

Я предлагаю использовать 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 .

Завершить Код генерации корма .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...