私はdjango-cmsを使用しており、(標準のテキストプラグインを使用して)テキストコンテンツをページに追加します。次に、そのテキストで、htmlモードに入り<img src="/foo/bar.png" />
、プラグインを追加して保存し、ページを保存します。
このサイトでは、私が行ったページの変更が表示されていますが、imgタグが削除されています。
なぜこれが起こっているのか考えていますか?私はwymeditorとfckeditorを試しましたが、両方で発生します。
私はdjango-cmsを使用しており、(標準のテキストプラグインを使用して)テキストコンテンツをページに追加します。次に、そのテキストで、htmlモードに入り<img src="/foo/bar.png" />
、プラグインを追加して保存し、ページを保存します。
このサイトでは、私が行ったページの変更が表示されていますが、imgタグが削除されています。
なぜこれが起こっているのか考えていますか?私はwymeditorとfckeditorを試しましたが、両方で発生します。
Django CMS では、Django テンプレート層の前に HTML クリーニングが行われると思います。データベースを調べたところ、HTML の "" タグがサニタイズされていることがわかりました。
これは、プラグイン(Django CMS がコンテンツのビットに使用するフレーズ) レイヤーで発生すると思います。HTML を追加するには、 Text プラグインを使用していると想定しています。Text プラグイン モデルのメソッドのソースをclean
見ると、次のようになります。
def clean(self):
self.body = clean_html(self.body, full=False)
を呼び出しcms.utils.clean_html
、次に を使用html5lib
して HTML をサニタイズします。
これを回避する 1 つの方法は、プラグインから継承するカスタム プラグインを作成し、このサニタイズを行わないメソッドをText
再実装することです。clean
Django では、文字列はデフォルトで Web ページに出力される前にサニタイズされます。Django-CMS はプラグインをサニタイズされていないユーザー データのように扱うため、Django テンプレート システムはプラグインから HTML 文字を取り除きます。
Django テンプレート ドキュメント: http://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs
最初の項目 autoescape に注意してください。プラグインがそのフィルターを通過していると思われます。
申し訳ありませんが、これ以上の詳細はありません。私は Django-CMS の人ではありません。