3

私はdjango-cmsを使用しており、(標準のテキストプラグインを使用して)テキストコンテンツをページに追加します。次に、そのテキストで、htmlモードに入り<img src="/foo/bar.png" />、プラグインを追加して保存し、ページを保存します。

このサイトでは、私が行ったページの変更が表示されていますが、imgタグが削除されています。

なぜこれが起こっているのか考えていますか?私はwymeditorとfckeditorを試しましたが、両方で発生します。

4

2 に答える 2

3

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

于 2013-02-06T15:31:47.023 に答える
0

Django では、文字列はデフォルトで Web ページに出力される前にサニタイズされます。Django-CMS はプラグインをサニタイズされていないユーザー データのように扱うため、Django テンプレート システムはプラグインから HTML 文字を取り除きます。

Django テンプレート ドキュメント: http://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs

最初の項目 autoescape に注意してください。プラグインがそのフィルターを通過していると思われます。

申し訳ありませんが、これ以上の詳細はありません。私は Django-CMS の人ではありません。

于 2011-02-08T12:45:38.237 に答える