代码之家  ›  专栏  ›  技术社区  ›  indigochild

作者姓名未出现在Django syndication rss提要中

  •  0
  • indigochild  · 技术社区  · 6 年前

    我有一个Django网站。它有一个使用 django syndication framework ). 尽管我在提要的定义中指定了author_name,但提要本身中不会出现author。作者需要将提要提交到我检查过的所有目录。

    我的订阅源.py看起来像这样:

    from django.contrib.syndication.views import Feed
    from django.utils.feedgenerator import Rss201rev2Feed
    
    from Audits.models import Audit
    from django.urls import reverse
    
    class SubscriptionFeed(Feed):
        feed_type = Rss201rev2Feed
        title = "Audio feed title"
        link = "/listen/"
        description = "A description of the audio feed."
    
        author_name = "Example feed author"
        author_email = "example@gmail.com"
    
        def items(self):
            return Audits.objects.all().filter(published=True).exclude(audio_file='').order_by('-year_integer', '-month_integer')
    
        def item_title(self, item):
            return item.title
    
        def item_description(self, item):
            return item.abstract
    
        def item_link(self, item):
            return reverse('Podcast-Pages', args=[item.pk])
    
        def item_author_name(self, item):
            return "Example Item Author"
    
    0 回复  |  直到 6 年前
        1
  •  1
  •   jnns Sven Finger    6 年前

    上的RSS2.0规范 http://www.rssboard.org/rss-specification 没有列出 作者 按需或提要的可选属性—仅用于项。

    的来源 Rss201rev2Feed 也不实现feed作者,但是 Atom1Feed 做!

    你可以使用 feed_type = Atom1Feed 在源定义中,或在自定义源类型上添加author属性:

    class iTunesFeed(Rss201rev2Feed):
        def add_root_elements(self, handler):
            super().add_root_elements(handler)
            if self.feed['author_name'] is not None:
                handler.startElement("author", {})
                handler.addQuickElement("name", self.feed['author_name'])
                if self.feed['author_email'] is not None:
                    handler.addQuickElement("email", self.feed['author_email'])
                if self.feed['author_link'] is not None:
                    handler.addQuickElement("uri", self.feed['author_link'])
                handler.endElement("author")