最近在学习django,尝试用django做一个企业网站,在过程中发现一个小问题,django模板默认在花括号中输出的是纯文本,但是我需要输出html,直接显示内容里面的带格式文本以及图片等内容。
比如,我在模板文件中的代码如下:
<span style="line-height:25px">{{ Content }}</span>其中 Content的值为:
Content="<h1>我的测试</h1>"我的目的是输出:

但是实际上默认输出的是:

在网上找了好久,我找到了方法,就是暂时使用过滤器,关闭转义功能,显示完这个变量后再打开。代码如下:
{% autoescape off %}
<span style="line-height:25px">{{ Content }}</span>
{% endautoescape %}off 的意思是关闭对html的转义,而将off替换成on就表示进行html转义,默认进行html转义
注意:autoescape 具备继承性的,如果在父模版中定义了,则在子模版对应内容部分也存在此属性我们可能会疑问,django为什么要将这些字符转义,而不是按原本html的内容输出呢?
只是django出于安全性的考虑,如果默认不转义的话,在上传的文本中可以引入一些js脚本之类的对网站乃至服务器进行破解或者攻击。
博主在使用Django搭建企业网站时,遇到模板默认输出纯文本,无法输出HTML内容的问题。通过查找,找到使用过滤器关闭转义功能的解决办法,同时解释了Django默认转义是出于安全性考虑,防止上传文本中的脚本攻击网站和服务器。
759

被折叠的 条评论
为什么被折叠?



