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>

       浏览器显示结果如下:

  • 相关阅读:
    1035: 相同生日
    1034: 7, 还是7
    1033: 青蛙的约会
    1032: 蛇行矩阵
    1031: 最少钱币数
    1030: 到底买不买
    1029: 挖掘机技术哪家强
    scikit-learn 和pandas 基于windows单机机器学习环境的搭建
    用scikit-learn和pandas学习线性回归
    SimRank协同过滤推荐算法
  • 原文地址:https://www.cnblogs.com/MnCu8261/p/5903225.html
Copyright © 2011-2022 走看看