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>

       浏览器显示结果如下:

  • 相关阅读:
    黑马程序员——【Java基础】——Java IO流
    黑马程序员——【Java基础】——泛型、Utilities工具类、其他对象API
    黑马程序员——【Java基础】——集合框架
    nodeJs与elementUI实现上图片
    NodeJS连接mysql数据库
    nodeJs实现跨域
    将Express生成器下的pug修改为html
    git使用总结
    使用vue+elementUI组件实现表格自动完成
    nginx配置thinkphp5
  • 原文地址:https://www.cnblogs.com/MnCu8261/p/5903225.html
Copyright © 2011-2022 走看看