美文网首页
HTML 转义

HTML 转义

作者: 流蓝浅 | 来源:发表于2018-04-17 21:10 被阅读0次

    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;" }} 
    

    相关文章

      网友评论

          本文标题:HTML 转义

          本文链接:https://www.haomeiwen.com/subject/rjapkftx.html