代码之家  ›  专栏  ›  技术社区  ›  Sergey Golovchenko

RSS源中通道图像的Django指定方法

  •  10
  • Sergey Golovchenko  · 技术社区  · 16 年前

    在RSS提要中指定频道图像的“django方式”是什么?我可以通过滚动自己的XML手动完成这项工作,但我在寻找一种合适的方法。

    编辑 Dobrych的解决方案在这里不太适用,因为我特别询问的是RSS而不是Atom提要

    3 回复  |  直到 13 年前
        1
  •  10
  •   Sergey Golovchenko    16 年前

    找到了 正确的 方法。作为 documentation 描述,我需要通过从 RSS201VRI2饲料 和重写方法

    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
  •  7
  •   Roman Suprotkin    13 年前

    对于有效的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
  •  4
  •   carefulweb    16 年前

    我建议使用 django-atompub 用于原子饲料的生产。 它有非常好的类抽象,有很多选项,所以没有任何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 .

    完成 feed generation code .