Django:为什么这个输出HTML转义

Raj*_*ena 6 django templates

在我的模板中,我写道:

<div class="content video">{{ each.text }}</div>
Run Code Online (Sandbox Code Playgroud)

我得到了:

<iframe width="300" height="200" src="http://www.youtube.com/embed/1C1HLH-hOZU" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)

我希望该文本成为标记的一部分,而不是文本.什么说?

Dir*_*ler 15

你的意思是输出each.text被转义,你在浏览器中看到文本而不是渲染的标记?

这是因为出于安全原因,Django的模板引擎默认自动输出输出.您可能希望使用内置safe过滤器,如下所示:

<div class="content video">{{ each.text|safe }}</div>
Run Code Online (Sandbox Code Playgroud)

或者另一种方法是mark_safe在您的视图中使用.