Django模板-HTML转义

HTML转义

模板对上下文传递的字符串进行输出时,会将以下字符进行转义

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

Django模板-HTML转义_第1张图片

(1)打开  应用/views.py文件,创建视图html_escape。

def html_escape(request):

    context={'content':'

hello world

'}

    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转义_第2张图片

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

<h1>hello worl</h1>

关闭转义

对于变量使用safe过滤器

{{ data|safe }}

对于代码块使用autoescape标签

{ % autoescape off %}

{{ body }}

{ % endautoescape %}

标签autoescape接受on或者off参数

自动转义标签在base模板中关闭,在child模板中也是关闭的

字符串字面值

对于在模板中硬编码的html字符串,不会转义

模板硬编码不转义:{ { d | default:"123" }}

如下图

Django模板-HTML转义_第3张图片

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

{ { d | default:">b<123</b>" }}

如下图

你可能感兴趣的:(Django模板-HTML转义)