HTML 转义

Django 对字符串进行自动 HTML 转义,如在模板中输出如下值:
视图代码:

def index(request):

    return render(request, 'temtest/index2.html', 

                  { 

                      't1': '<h1>hello</h1>' 

                  }) 

模板代码:

   {{t1}} 

 显示效果如下图:

<h1>hello</h1> 

会被自动转义的字符

 html 转义,就是将包含的 html 标签输出,而不被解释执行

 原因是当显示用户提交字符串时,可能包含一些攻击性的代码,如 js 脚本

 Django 会将如下字符自动转义:

< 会转换为&lt; 

> 会转换为&gt; 

 ' (单引号)  会转换为&#39; 

  " (双引号)会转换为       &quot; 

   &  会转换为     &amp; 

 当显示不被信任的变量时使用 escape 过滤器,一般省略,因为 Django 自动转义

   {{t1|escape}} 

关闭转义

 对于变量使用 safe 过滤器

  {{ data|safe }} 

 对于代码块使用 autoescape 标签

  { % autoescape off %} 

  {{ body }} 

  { % endautoescape %} 

 标签 autoescape 接受 on 或者 off 参数
自动转义标签在 base 模板中关闭,在 child 模板中也是关闭的

字符串字面值

 手动转义

    { { data|default:"<b>123</b>" }} 

 应写为

      { { data|default:"&lt;b&gt;123&lt;/b&gt;" }} 
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容