HTML转义

HTML转义HTML转义模板对上下文传递的字符串进行输出时,会对以下字符自动转义示例打开booktest/views.py文件,创建视图zhuanyi打开booktest/urls.py文件,配置url在templates/booktest/目录下创建zhuanyi.html运行服务器,在浏览器中输

大家好,欢迎来到IT知识分享网。

HTML转义

  • 模板对上下文传递的字符串进行输出时,会对以下字符自动转义
小于号< 转换为&lt;

大于号> 转换为&gt;

单引号' 转换为&#39;

双引号" 转换为 &quot;

与符号& 转换为 &amp;

示例

  • 打开booktest/views.py文件,创建视图zhuanyi
def zhuanyi(request):
    context={'content':'<h1>hello world</h1>'}
    return render(request,'booktest/zhuanyi.html',context)

  

  • 打开booktest/urls.py文件,配置url
url(r'^zhuanyi/$', views.zhuanyi),

  

  • 在templates/booktest/目录下创建zhuanyi.html
<html>
<head>
    <title>转义</title>
</head>
<body>
自动转义:{{content}}
</body>
</html>

  

  • 运行服务器,在浏览器中输入如下网址
http://127.0.0.1:8000/zhuanyi/
  • 转义后标记代码不会被直接解释执行,而是被直接呈现,防止客户端通过嵌入js代码攻击网站
  • 浏览效果如下图

HTML转义

 

关闭转义

  • 过滤器escape可以实现对变量的html转义,默认模板就会转义,一般省略
{{t1|escape}}

  

  • 过滤器safe:禁用转义,告诉模板这个变量是安全的,可以解释执行
{{data|safe}}

  

  • 修改templates/booktest/zhuanyi.html代码如下
<html>
<head>
    <title>转义</title>
</head>
<body>
自动转义:{{content}}
<hr>
过滤器safe关闭转义:{{content|safe}}
</body>
</html>

  

  • 刷新浏览器后效果如下图

HTML转义

 

  • 标签autoescape:设置一段代码都禁用转义,接受on、off参数
{%autoescape off%}
...
{%endautoescape%}

  

  • 修改templates/booktest/zhuanyi.html代码如下
<html>
<head>
    <title>转义</title>
</head>
<body>
自动转义:{{content}}
<hr>
过滤器safe关闭转义:{{content|safe}}
<hr>
标签autoescape关闭转义:
{%autoescape off%}
{{content}}
{%endautoescape%}
</body>
</html>

  

  • 刷新浏览器后效果如下图

HTML转义

 

字符串字面值

  • 对于在模板中硬编码的html字符串,不会转义
  • 修改templates/booktest/zhuanyi.html代码如下
<html>
<head>
    <title>转义</title>
</head>
<body>
自动转义:{{content}}
<hr>
过滤器safe关闭转义:{{content|safe}}
<hr>
标签autoescape关闭转义:
{%autoescape off%}
{{content}}
{%endautoescape%}
<hr>
模板硬编码不转义:{{data|default:'<b>hello</b>'}}
</body>
</html>

  

  • 刷新浏览器后效果如下图

HTML转义

 

  • 如果希望出现转义的效果,则需要手动编码转义

  • 修改templates/booktest/zhuanyi.html代码如下

<html>
<head>
    <title>转义</title>
</head>
<body>
自动转义:{{content}}
<hr>
过滤器safe关闭转义:{{content|safe}}
<hr>
标签autoescape关闭转义:
{%autoescape off%}
{{content}}
{%endautoescape%}
<hr>
模板硬编码不转义:{{data|default:'<b>hello</b>'}}
<hr>
模板硬编码手动转义:{{data|default:"<b>123</b>"}}
</body>
</html>

  

  • 刷新浏览器后效果如下图

HTML转义

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31157.html

(0)
上一篇 2023-10-30 11:33
下一篇 2023-11-07 17:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信