最近在学习django,尝试用django做一个企业网站,在过程中发现一个小问题,django模板默认在花括号中输出的是纯文本,但是我需要输出html,直接显示内容里面的带格式文本以及图片等内容。
比如,我在模板文件中的代码如下:
<span style="line-height:25px">{{ Content }}</span>
其中 Content的值为:
Content="<h1>我的测试</h1>"
我的目的是输出:
![](https://i-blog.csdnimg.cn/blog_migrate/6df8f0c97cf19529525305bef03a1828.png)
但是实际上默认输出的是:
![](https://i-blog.csdnimg.cn/blog_migrate/b1a99e52b61df4fbe8a00d4160d37108.png)
在网上找了好久,我找到了方法,就是暂时使用过滤器,关闭转义功能,显示完这个变量后再打开。代码如下:
{% autoescape off %}
<span style="line-height:25px">{{ Content }}</span>
{% endautoescape %}
off 的意思是关闭对html的转义,而将off替换成on就表示进行html转义,默认进行html转义
注意:autoescape 具备继承性的,如果在父模版中定义了,则在子模版对应内容部分也存在此属性我们可能会疑问,django为什么要将这些字符转义,而不是按原本html的内容输出呢?
只是django出于安全性的考虑,如果默认不转义的话,在上传的文本中可以引入一些js脚本之类的对网站乃至服务器进行破解或者攻击。