Для генерации фидов в django используется модуль syndication feeds. Иногда бывает необходимо добавить собственные теги в новостную ленту. Например, для экспорта в «Яндекс Новости», необходимо передать полный текст статьи внутри тега <yandex:full-text>
.
Создадим класс CustomFeedGenerator
и добавим в него метод add_item_elements
.
from django.contrib.syndication.views import Feed
from django.utils.feedgenerator import Rss201rev2Feed
from blog import models
class CustomFeedGenerator(Rss201rev2Feed):
def add_item_elements(self, handler, item):
super(CustomFeedGenerator, self).add_item_elements(handler, item)
# Добавление кастомного тега в RSS-ленту
handler.addQuickElement(u"yandex:full-text", item["content"])
class CustomFeed(Feed):
# Задаем кастомный генератор ленты
feed_type = CustomFeedGenerator
# Здесь должны быть описаны параметры фида
# (заголовок, описание, ссылка и т.д.)
def items(self):
return models.Article.public.order_by('-published')
def item_extra_kwargs(self, item):
return {
"content": item.html(),
}
Функция item_extra_kwargs
позволяет добавить к элементу фида дополнительные поля. В данном случае, мы добавили полный текст статьи в словарь item
с ключом content
. Метод item.html()
находится в модели Article
и возвращает html-представление текста статьи, написанного в markdown.
Комментарии к статье: 3
Возможность комментировать эту статью отключена автором. Возможно, во всем виновата её провокационная тематика или большое обилие флейма от предыдущих комментаторов.
Если у вас есть вопросы по содержанию статьи, рекомендуем вам обратиться за помощью на наш форум.