Flask进阶系列(三)–Jinja2模板引擎

其实我们在入门系列第三篇中已经介绍了模板,包括如何渲染模板,表达式和控制语句,模板继承,还有HTML转义。我们也知道了Flask模板是基于Jinja2实现的。其实Jinja2的模板功能远不止这些,想了想,还是决定在进阶系列中,更深入地介绍Jinja2模板引擎。

系列文章

Jinja2模板引擎同Flask一样,都是由一个叫Pocoo的组织维护着的,该组织另外几个有名的项目是WerkzeugSphinx。Werkzeug是Python的WSGI规范的函数库,也是Flask的基础库之一。如果朋友们看过Flask源码的话,会发现其实Flask本身代码没多少,正如其所标榜的,就是一个非常轻量级的Web框架。Flask很多实用的功能都是依赖Werkzeug和Jinja2实现的。Sphinx是Python的文档生成工具,用其写文档语法很类似于Markdown,Flask官网的文档就是由Sphinx生成的。

讲了那么多不相关的,我们还是回到Jinja2上。从Flask源码上看,其只指明对”.html”, “.htm”, “.xml”, “.xhtml”这四种类型的文件开启HTML格式自动转义。所以,我们定义模板文件时最好选这些后缀名,个人建议就使用”.html”文件。另外,Flask只选择加载了2个Jinja扩展,”jinja2.ext.autoescape”和”jinja2.ext.with_”,其他扩展功能则无法使用,我们回头会介绍如何对Flask应用添加Jinja2的扩展。你可以通过”app.jinja_env”(这里的app就是你的Flask应用对象)来访问Jinja2的对象。不过我们不建议这么做,Flask开放了下面几个方法和装饰器来让应用开发者扩充Jinja2的功能:

函数 装饰器 作用
add_template_filter template_filter 自定义过滤器
add_template_test template_test 自定义测试器
add_template_global template_global 自定义全局函数

本来计划在一篇文章里介绍Jinja2模板引擎在Flask里的使用,结果发现内容太多了,还是决定写一个系列(系列中套系列,汗…),读者看起来也轻松点。这里就列个大纲:

另外,毕竟再怎么详细介绍,也无法比官网更全,所以还是那句老话,想再深入了解Jinja2的朋友们,可以参阅官方文档源代码

转载请注明出处: 思诚之道

《Flask进阶系列(三)–Jinja2模板引擎》有2个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注