Каков наилучший способ встраивания HTML в канал RSS? - PullRequest
6 голосов
/ 14 января 2009

Я использую возможности Django RSS для создания канала RSS. <description> элементов RSS-канала содержит HTML-разметку. В настоящее время я просто внедряю разметку HTML в канал, используя следующий шаблон:

{{ obj.post }}

Django, конечно, переводит специальные символы (<, >, & и т. Д.) В соответствующие им объекты HTML.

Я знаю, что мог бы просто вывести HTML-код и обернуть весь HTML-код в разделы <![CDATA[...]]>. На этой странице написано, что любой метод приемлем. Если это правда, есть ли веская причина выбрать один метод вместо другого? И если я использую пример № 2, есть ли фильтр для Django, чтобы автоматически оборачивать текст HTML в теги CDATA, или я должен просто изменить свой шаблон на:

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

Редактировать

Похоже, что Django автоматически экранирует специальные символы в RSS-каналах (или в любом другом XML) независимо от того, пропускаете ли вы его через фильтр safe или нет (проблема обсуждается в этого тикета ). Тем не менее, общие ответы приветствуются.

Ответы [ 3 ]

2 голосов
/ 15 января 2009

Когда я сталкиваюсь с такими проблемами с Django, мой первый инстинкт - убежать и найти нормальную библиотеку Python, которая делает то, что я хочу. В этом случае PyRSS2Gen может быть вашим спасителем.

Вероятно, потребуется немного больше фанатизма (потому что он не будет знать, что такое объекты Django), но он должен быть достаточно сырым, чтобы позволить вам делать, как вы хотите.

А если это не так, это всего лишь сценарий. Вы можете разбить его на части, чтобы разрешить необработанный HTML, если хотите =)

1 голос
/ 01 мая 2012

Вместо написания собственной ленты RSS XML рассмотрите возможность использования структуры синдикации Django из django.contrib.syndication:

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

0 голосов
/ 15 января 2009

Встраивание HTML - это CDATA беспокоил меня в прошлом. Надеюсь, что читатели RSS эволюционировали для обработки таких вставок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...