如果想深入学习Flask,可以观看这套免费Flask教学视频:Flask入门到项目实战
转义
转义的概念是,在模板渲染字符串的时候,字符串有可能包括一些非常危险的字符比如<、>等,这些字符会破坏掉原来HTML标签的结构,更严重的可能会发生XSS跨域脚本攻击,因此如果碰到<、>这些字符的时候,应该转义成HTML能正确表示这些字符的写法,比如>在HTML中应该用<来表示等。
但是Flask中默认没有开启全局自动转义,针对那些以.html、.htm、.xml和.xhtml结尾的文件,如果采用render_template函数进行渲染的,则会开启自动转义。并且当用render_template_string函数的时候,会将所有的字符串进行转义后再渲染。而对于Jinja2默认没有开启全局自动转义,作者有自己的原因:
- 渲染到模板中的字符串并不是所有都是危险的,大部分还是没有问题的,如果开启自动转义,那么将会带来大量的不必要的开销。
Jinja2很难获取当前的字符串是否已经被转义过了,因此如果开启自动转义,将对一些已经被转义过的字符串发生二次转义,在渲染后会破坏原来的字符串。
在没有开启自动转义的模式下(比如以.conf结尾的

本文介绍Flask模板渲染时的转义概念,以防止字符破坏标签结构和潜在的跨站脚本攻击。默认情况下,Flask不开启全局自动转义,但在某些特定文件类型中会自动转义。为了手动转义或关闭自动转义,可以使用特定的模板语法。要深入了解Flask,推荐观看相关的教学视频。
最低0.47元/天 解锁文章
——转义&spm=1001.2101.3001.5002&articleId=80391805&d=1&t=3&u=f53cd06a558a4e369523d479431cd1b9)
1万+

被折叠的 条评论
为什么被折叠?



