zoukankan      html  css  js  c++  java
  • django中的转义

    什么是html转义?

      所谓html转义就是将  html关键字(包括标签,特殊字符等)  进行过滤替换。过滤替换格式如下:

    接下来我们通过实例演示django中转义的细节以及如何关闭转义 

     

    一  django的模板默认会对  模板变量  进行转义,比如: 

      我们的urls.py文件中有这么一行: 

    url(r'^test/$',views.test)

      名为test的view函数:

    def test(request):
        return render(request,'test.html',{
            'content':'<h1>hello world</h1>'
        })

      test.html文件的内容:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    {{ content }}    
    </body>
    </html>

      运行manager.py  在浏览器中输入http://127.0.0.1:8000/test/    结果:


      这是因为:django的模板默认会对  模板变量  进行转义,模板变量中的  “ < ”  “ > ”  分别被转义成 &lt;  &gt;  本例中的html实际上是这样的:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    &lt;h1&gt;hello world&lt;/h1&gt;
    </body>
    </html>

    二  如何关闭自动转义 

      1  在模板中使用{% autoescape off %}标签

       修改test.html文件如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    {% autoescape off %}
    {{ content }}
    {% endautoescape %}
    </form>
    </body>
    </html>

       浏览器显示结果:

     

      2  使用safe过滤器:

       修改test.html文件:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    {{ content|safe }}
    </form>
    </body>
    </html>

       浏览器显示结果如下:

  • 相关阅读:
    屏蔽docker镜像暴露的端口
    runtime/cgo: pthread_create failed: Resource temporarily unavailable
    用户状态bash-4.2$
    Datasnap 和mORMOT 性能对比!
    Delphi XE 时间和时间戳互转换
    Delphi XE 10.4.2 IDE 设置----【代码格式化】
    DELPHI XE 数据集合并(TFDLocalSQL)
    CXGRID 常用功能设置
    MSSQL行转列
    delphi xe 获取字符串长度(不足补位)
  • 原文地址:https://www.cnblogs.com/MnCu8261/p/5903225.html
Copyright © 2011-2022 走看看