Изображение отсутствует в RSS / ATOM с Django - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь прикрепить изображение к моему каналу синдикации ATOM и RSS благодаря документации Django: https://docs.djangoproject.com/fr/1.11/ref/contrib/syndication/

Мне нужен вид канала: http://example.com/rss и http://mywebsite.com/atom

rss.py

class LatestEntriesFeed(Feed):
title = "MyWebsite"
link = "/"
description = "Latest news"


def items(self):
    return Articles.objects.filter(published=True).order_by('-date')[:5]

def item_description(self, item):
    return '<![CDATA[ <img src="http://example.com/image.jpeg" /> ]]>'

def item_title(self, item):
    return item.title

def item_pubdate(self, item):
    return item.date

def item_updateddate(self, item):
    return item.update

def item_author_name(self, item):
    return item.author

def item_author_link(self, item):
    item_author_link = Site_URL + reverse('team', kwargs={'username': item.author})
    return item_author_link

def item_author_email(self):
    return EMAIL_HOST_USER

class LatestEntriesFeedAtom(LatestEntriesFeed):
    feed_type = Atom1Feed
    subtitle = LatestEntriesFeed.description

Поэтому я думаю, что мне нужно использовать CDATA в тег description html. Однако в Django (версия 1.11) item_description не возвращает тег <description> в XML, а возвращает тег <summary>.

Все в порядке или это источник проблемы ?

В противном случае я попытался сканировать с помощью валидатора W3 C и получил 2 ошибки (или просто предупреждения?)

1) Самостоятельная ссылка не соответствует местоположению документа

2) Недействительный HTML: ожидалось '-' или 'DOCTYPE'. Не найден. (5 раз)

1 Ответ

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

Я нашел решение. Я отказался от тега CDATA, чтобы следовать такой структуре:

def item_description(self, item):
  return '<figure><img src="http://example.com/image.jpeg" class="type:primaryImage" /><figcaption><p>My Image description</p></figcaption></figure><p>Some text</p>'

Мне помогло руководство Google: https://support.google.com/news/publisher-center/answer/9545420?hl=fr

...