21 Django模板 - HTML转义

简介: 21 Django模板 - HTML转义

Django对字符串进行自动HTML转义,如在模板中输出如下值:

视图代码:
def index(request):
    return render(request, 'temtest/index2.html',
                  {
                      't1': '<h1>hello</h1>'
                  })
模板代码:
{{t1}}

显示效果如下图:

1.会被自动转义的字符

  • html转义,就是将包含的html标签输出,而不被解释执行,原因是当显示用户提交字符串时,可能包含一些攻击性的代码,如js脚本
- Django会将如下字符自动转义:
< 会转换为&lt;
> 会转换为&gt;
' (单引号) 会转换为&#39;
" (双引号)会转换为 &quot;
& 会转换为 &amp;

当显示不被信任的变量时使用escape过滤器,一般省略,因为Django自动转义

{{t1|escape}}

2.关闭转义

对于变量使用safe过滤器

{{ data|safe }}

对于代码块使用autoescape标签

{ % autoescape off %}
{{ body }}
{ % endautoescape %}

标签autoescape接受on或者off参数

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

3.字符串字面值

手动转义:

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

应写为:

{ { data|default:"&lt;b&gt;123&lt;/b&gt;" }}
目录
相关文章
|
1月前
|
Java
有关Java发送邮件信息(支持附件、html文件模板发送)
有关Java发送邮件信息(支持附件、html文件模板发送)
31 1
|
1月前
分享82个Html经典模板,总有一款适合您
分享82个Html经典模板,总有一款适合您
23 0
|
1月前
|
前端开发 安全
分享81个Html经典模板,总有一款适合您
分享81个Html经典模板,总有一款适合您
19 2
|
12天前
|
开发者 Python
Django模板系统的强大之处:动态渲染与扩展性
【4月更文挑战第15天】Django模板系统是Web开发中的强大工具,支持动态渲染和扩展性。动态渲染包括变量、标签和过滤器的使用,实现内容根据上下文数据动态生成。模板继承和自定义标签则提升了扩展性,减少代码重复,增强可维护性。通过这些特性,Django模板系统助力开发者构建高效、动态的Web应用。
|
1月前
分享84个Html经典模板,总有一款适合您
分享84个Html经典模板,总有一款适合您
18 0
|
1月前
|
iOS开发
分享83个Html经典模板,总有一款适合您
分享83个Html经典模板,总有一款适合您
44 7
|
1月前
分享80个Html经典模板,总有一款适合您
分享80个Html经典模板,总有一款适合您
15 0
|
1月前
|
存储 安全
分享69个Html杂七杂八模板,总有一款适合您
分享69个Html杂七杂八模板,总有一款适合您
20 1
|
1月前
|
监控 安全 应用服务中间件
python中Django入门(四)
python中Django入门(四)
31 0
|
19天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【4月更文挑战第9天】本文对比了Python三大Web框架Django、Flask和Pyramid。Django功能全面,适合快速开发,但学习曲线较陡;Flask轻量灵活,易于入门,但默认配置简单,需自行添加功能;Pyramid兼顾灵活性和可扩展性,适合不同规模项目,但社区及资源相对较少。选择框架应考虑项目需求和开发者偏好。