6

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

{{ obj.post }}

当然,Django 会将特殊字符(<>&等)翻译成它们各自的 HTML 实体。

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

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

编辑

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

4

3 回答 3

2

When I run into issues like this with Django my first instinct is to run off and find a normal Python lib that does what I want. In this case PyRSS2Gen might be your saviour.

It'll probably require a bit more fannying around (because it'll be unaware of what Django objects are) but it should be raw enough to let you do as you wish.

And if it isn't, it's just a script. You can hack it apart to allow raw HTML if you please =)

于 2009-01-15T09:33:59.600 回答
1

Embedding HTML is CDATA has troubled me in the past. Hope RSS readers have evolved to handle such embeds.

于 2009-01-15T09:52:22.447 回答
1

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

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

于 2012-05-01T08:51:27.760 回答