django - 如何将图像添加到 Django 的聚合 RSS 源

标签 django rss

拥有此模型:

class MyModel(models.Model):
    …
    image = StdImageField(
        upload_to="img/images",
        blank=True,
        variations={
            "large": (1024, 1024),
            "thumbnail": (150, 150, False),
            "medium": (600, 600),
        },
        delete_orphans=True,
    )

和这个 View

…
from django.contrib.syndication.views import Feed
…
class LatestItems(Feed):
    title = "LatestItems"
    description = "Latest Items"
    link = "/sitenews/"

    def items(self):
        return MyModel.objects.all()

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

    def item_description(self, item):
        return item.description

    def item_link(self, item):
        return reverse('item_detail', args=[item.pk])

如何将图像添加到 RSS 文章正文?

最佳答案

创建自定义 feed_type 并在 Feed View 中设置,

from django.contrib.syndication.views import Feed
<b>from django.utils.feedgenerator import Rss201rev2Feed
from django.conf import settings


class CustomFeed(Rss201rev2Feed):
    def add_item_elements(self, handler, item):
        super().add_item_elements(handler, item)
        handler.addQuickElement("image", item["image"])</b>


class LatestItems(Feed):
    <b>feed_type = CustomFeed</b>
    title = "LatestItems"
    description = "Latest Items"
    link = "/sitenews/"

    def items(self):
        return MyModel.objects.all()

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

    def item_description(self, item):
        return item.description

    def item_link(self, item):
        return reverse('item_detail', args=[item.pk])

    <b>def get_context_data(self, **kwargs):
        setattr(self, 'request', kwargs['request']) # to access the request object later
        return super().get_context_data(**kwargs)

    def item_extra_kwargs(self, item):
        img_url = item.image.url
        request_url = self.request.build_absolute_uri('/')[:-1]
        image_url_abs = f"{request_url}{settings.STATIC_URL}{img_url}"
        return {
            'image': image_url_abs
        }</b>

结果

Result Screenshot

关于django - 如何将图像添加到 Django 的聚合 RSS 源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61544508/

相关文章:

django - 如何从json数据更新模型字段?

ruby - Middleman feed.xml.builder 与 iTunes 标签相关的问题

django - 从 django View 获取媒体文件夹的绝对路径

python - django,fastcgi : how to manage a long running process?

jquery - django jquery json 反序列化

python - 在 django 中发布表单后无法重定向到 URL

python - 使用 Python 混合 RSS 提要的好方法是什么?

java - RSS4J项目的去向

php - RSS 提要不显示 PHP 变量

javascript - 如何将交替类添加到缩略图的动态提要中?