1

次のように、スタイル タグ内のモデルから CSS を埋め込む必要があるテンプレートがあります。

<style>{{m.get_css_text}}</style>

(重要な場合、m は実際には for-in var です)

これは、IE でのみ発生する 1 つの不具合を除いて、問題なく動作します。CSS に、次のように引用符を使用するフィルター ルールが含まれているルールがあります。

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#f5f5f5") !important;

django のデフォルトのエスケープ動作は引用符をエスケープします。これは CSS ルールを破り、ルールが適用される IE の CSS を台無しにします。

もちろん、|safe フィルターを使用するとこの問題は解決しますが、私はそれを使用したくありません。今のところ、CSS を保持するモデルはスタッフのみが編集できますが、将来的にはユーザーが作成できるようになる可能性があります。

私の質問はこれです-引用符などのエスケープを防ぐためにどのフィルターを使用する必要がありますか?しかし、タグを安全に保ちますか? これまでの私の唯一のアイデアは removetags フィルターを使用することですが、それが最善のアイデアかどうかはわかりません。

ありがとう!

4

1 に答える 1

0

striptagsとの組み合わせを使用するだけsafeです。

<style>{{m.get_css_text|striptags|safe}}</style>

HTML タグが削除されたので、「安全でない」ことは何もありsafeません (申し訳ありませんが、どうしようもありませんでした)。

于 2012-10-12T14:03:42.093 に答える