【问题标题】:What is the best way to embed HTML in an RSS feed?在 RSS 提要中嵌入 HTML 的最佳方式是什么?
【发布时间】:2009-01-14 18:58:42
【问题描述】:

我正在使用 Django 的 RSS 功能来构建 RSS 提要。 RSS 提要项的<description> 包含HTML 标记。目前,我只是使用以下模板将 HTML 标记注入到提要中:

{{ obj.post }}

当然,Django 会将特殊字符(<>& 等)转换为各自的 HTML 实体。

我知道我可以只输出 HTML 并将所有 HTML 代码包装在 <![CDATA[...]]> 部分中。 This page 表示这两种方法都可以接受。如果这是真的,是否有充分的理由选择一种方法而不是另一种方法?如果我使用示例 #2,是否有一个过滤器让 Django 自动将 HTML 文本包装在 CDATA 标记中,或者我应该将模板更改为:

<![CDATA[
{{ obj.post|safe }}
]]>

编辑

似乎 Django 自动转义 RSS 提要(或任何 XML)中的特殊字符,无论您是否通过 safe 过滤器(该问题在 this ticket 中讨论)。不过,欢迎提供一般性答案。

【问题讨论】:

  • 这是一个重复的问题:stackoverflow.com/questions/113024/…
  • 我之前发现过,但我不太想知道 如何 去做(我已经知道了),但如果一种方法比另一种更好。我知道根据标准这两种方法都是可以接受的,但我想知道在实际实现中是否可能其中一种方法更缺乏。

标签: html django rss


【解决方案1】:

当我在 Django 中遇到这样的问题时,我的第一反应是跑掉并找到一个正常的 Python 库来满足我的需求。在这种情况下,PyRSS2Gen 可能是你的救星。

它可能需要多花点心思(因为它不知道 Django 对象是什么),但它应该足够原始,可以让你随心所欲。

如果不是,它只是一个脚本。如果您愿意,您可以将其拆分以允许使用原始 HTML =)

【讨论】:

    【解决方案2】:

    嵌入 HTML 是 CDATA 过去一直困扰着我。希望 RSS 阅读器已经发展到可以处理这种嵌入。

    【讨论】:

      【解决方案3】:

      与其编写自己的 RSS XML 提要,不如考虑使用来自django.contrib.syndication 的 Django 联合框架:

      https://docs.djangoproject.com/en/dev/ref/contrib/syndication/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-26
        • 1970-01-01
        • 1970-01-01
        • 2013-02-25
        相关资源
        最近更新 更多