Имя автора не отображается в RSS-ленте Django - PullRequest
0 голосов
/ 25 декабря 2018

У меня есть сайт на Django.Он имеет канал, который использует структуру синдикации django ).Несмотря на то, что я указал имя автора в определении канала, в самом канале не отображается ни один автор.Автор должен отправить фид во все каталоги, с которыми я проверял.

Мой 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"

1 Ответ

0 голосов
/ 16 мая 2019

Спецификация для RSS2.0 на http://www.rssboard.org/rss-specification не перечисляет автора в качестве обязательного или необязательного атрибута канала - только для элементов.

ИсточникRss201rev2Feed не реализует автора канала, но Atom1Feed делает!

Вы можете использовать feed_type = Atom1Feed в своем определении фида или добавить атрибут автора в свой тип фида:

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")
...