HTML转义
模板对上下文传递的字符串进行输出时,会将以下字符进行转义
所谓html转义就是将 html关键字(包括标签,特殊字符等) 进行过滤替换。过滤替换格式如下:
(1)打开 应用/views.py文件,创建视图html_escape。
def html_escape(request):
context={'content':'<h1>hello world</h1>'}
return render(request,'booktest/html_escape.html',context)
(2)打开 应用/urls.py文件,配置url。
url(r'^html_escape/$', views.html_escape),
(3)在templates/booktest/目录下创建html_escape.html,写入内容
自动转义:{{content}}
(4)运行服务器,在浏览器中输入如下网址。
http://127.0.0.1:8000/html_escape/
这是因为:django的模板默认会对模板变量 进行转义,模板变量中的 “ < ” “ > ” 分别被转义成 < > 本例中的html实际上是这样的:
<h1>hello worl</h1>
关闭转义
对于变量使用safe过滤器
{{ data|safe }}
对于代码块使用autoescape标签
{ % autoescape off %}
{{ body }}
{ % endautoescape %}
标签autoescape接受on或者off参数
自动转义标签在base模板中关闭,在child模板中也是关闭的
字符串字面值
对于在模板中硬编码的html字符串,不会转义
模板硬编码不转义:{ { d | default:"<b>123</b>" }}
如下图
如果希望出现转义的效果,则需要手动编码转义。
{ { d | default:">b<123</b>" }}
网友评论