6

Django の RSS 機能を使用して RSS フィードを作成しています。RSS フィード アイテムの<description>には、HTML マークアップが含まれています。現在、次のテンプレートを使用して HTML マークアップをフィードに挿入しています。

{{ obj.post }}

もちろん、Django は特殊文字 ( <>&など) をそれぞれの HTML エンティティに変換します。

HTML を出力して、すべての HTML コードを<![CDATA[...]]>セクションにラップするだけでよいことはわかっています。このページでは、どちらの方法でもかまいません。それが本当なら、ある方法を他の方法よりも選ぶ正当な理由はありますか? 例 2 を使用する場合、Django が HTML テキストを CDATA タグで自動的にラップするためのフィルターはありますか、またはテンプレートを次のように変更する必要があります。

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

編集

safeDjango は、フィルタを通過するかどうかに関係なく、RSS フィード (またはそれに関しては任意の XML) の特殊文字を自動エスケープするようです(問題はこのチケットで説明されています)。ただし、一般的な回答は大歓迎です。

4

3 に答える 3

2

Django でこのような問題に遭遇したとき、私の最初の本能は逃げ出し、私が望むことを行う通常の Python ライブラリを見つけることです。この場合、 PyRSS2Genがあなたの救世主になるかもしれません。

(Django オブジェクトが何であるかを認識しないため) 多少手を加える必要があるかもしれませんが、必要に応じて実行できるように十分に生である必要があります。

そうでない場合は、単なるスクリプトです。必要に応じて、生の HTML を許可するようにハックすることができます =)

于 2009-01-15T09:33:59.600 に答える
1

HTML is CDATA の埋め込みは、過去に私を悩ませてきました。RSS リーダーがこのような埋め込みを処理できるように進化していることを願っています。

于 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 に答える