4


3

Django、HTMLをテンプレートに配置する際の自動HTML "サニタイズ"、停止方法

DjangoテンプレートにはオプションのHTMLフィルターがあるように見えますが、これは自動的に行われているようです。 ユーザーがURLを取得するpythonスクリプトを呼び出すアクションを実行するこのデモアプリを作成しています。次に、これを新しいウィンドウに表示します。 表示が戻ったときを除いて、HTMLはこの形式でサニタイズされます(ページソースを表示すると、ブラウザで通常のHTMLとして表示されます:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta content="text/html; charset=utf-8" http-equiv="content-type" /><script type="text/javascript">//<![CDATA[
si_ST=new Date

これは同じものの通常のHTMLバージョンです。

//<![CDATA[ si_ST=new Date //]]>//<![CDATA[ _G={ST:(si_ST?si_ST:new Date),Mkt:"en-
</code></pre>

<p>I'm just outputting this to a basic block in my html template, the template has no other formatting (no HTML, etc), just 1 block where this output goes.. any advice on why this is happening and how to display the regular HTML (so it would show the page in the browser and not the HTML text) is appreciated.. thanks</p>

3 Answer


8


安全なフィルターを使用します。

{{ myvariable|safe }}

このように扱われるテンプレートの大部分が必要な場合(つまり、 `| safe`を繰り返し使用していることに気づいた場合)、自動エスケープの一括販売を無効にできます。

{% autoescape off %}
blah {{myvariable}} blah {{myothervariable}}
{% endautoescape %}


5


Djangoのデフォルトのエスケープを無効にする「安全な」フィルターを見てください。


2


ブロック全体のエスケープを制御するhttp://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#autoescape[autoescape]もあります。