1

我有一个基于 Django 的站点。它有一个使用django 联合框架的提要)。虽然我在提要的定义中指定了 author_name,但提要本身中没有作者出现。作者需要将提要提交给我检查过的所有目录。

我的 feeds.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"
4

1 回答 1

1

http://www.rssboard.org/rss-specification上的 RSS2.0 规范没有将作者列为必需的,也没有列出提要的可选属性——仅针对项目。

的源代码Rss201rev2Feed也没有实现提要作者,但Atom1Feed确实!

您可以feed_type = Atom1Feed在 Feed 定义中使用,也可以在自定义 Feed 类型中添加作者属性:

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")
于 2019-05-16T07:00:10.070 回答