我正在使用Django的RSS功能来构建RSS提要 . RSS订阅源的 <description>
包含HTML标记 . 目前,我只是使用以下模板将HTML标记注入到Feed中:
{{ obj.post }}
当然,Django会将特殊字符( <
, >
, &
等)转换为各自的HTML实体 .
我知道我可以输出HTML并将所有HTML代码包装在 <![CDATA[...]]>
部分中 . This page说这两种方法都可以接受 . 如果这是真的,是否有充分的理由选择一种方法而不是另一种?如果我使用示例#2,是否有一个过滤器让Django自动将HTML文本包装在CDATA标签中,或者我应该将模板更改为:
<![CDATA[
{{ obj.post|safe }}
]]>
编辑
无论你是否通过 safe
过滤器,Django似乎都会自动在RSS提要(或任何XML)中自动显示特殊字符(问题在this ticket中讨论) . 但是,一般的答案是受欢迎的 .
3 回答
不要编写自己的RSS XML feed,而应考虑使用
django.contrib.syndication
中的Django联合框架:https://docs.djangoproject.com/en/dev/ref/contrib/syndication/
嵌入HTML是CDATA过去困扰我的 . 希望RSS阅读器已经发展到可以处理这样的嵌入 .
当我用Django遇到这样的问题时,我的第一个本能就是跑掉并找到一个能够满足我想要的普通Python库 . 在这种情况下,PyRSS2Gen可能是你的救世主 .
它可能需要更多的扇动(因为它不知道Django对象是什么)但它应该足够原始让你按照自己的意愿去做 .
如果不是,那只是一个脚本 . 如果你愿意,你可以分开它以允许原始HTML =)