HTML转义
- Django对字符串进行自动HTML转义,如在模板中输出以下值:
视图代码:
def index(request): return render(request, 'temtest/index2.html', { 't1': '<h1>hello</h1>' }) 模板代码: {{t1}}
< h1 > hello < /h1 >
会被自动转义的字符
- html转义,就是将包含的html标签输出,而不被解释执行,缘由是当显示用户提交字符串时,可能包含一些攻击性的代码,如js脚本
- Django会将以下字符自动转义:
< 会转换为< > 会转换为> ' (单引号) 会转换为' " (双引号)会转换为 " & 会转换为 &
- 当显示不被信任的变量时使用escape过滤器,通常省略,由于Django自动转义
{{t1|escape}}
关闭转义
{{ data|safe }}
{ % autoescape off %}
{{ body }}
{ % endautoescape %}
- 标签autoescape接受on或者off参数
- 自动转义标签在base模板中关闭,在child模板中也是关闭的
字符串字面值
{ { data|default:"<b>123</b>" }}
{ { data|default:"<b>123</b>" }}