Jinja2:Flask应用中的高效模板引擎
Jinja2是一个纯Python编写的模板引擎,它提供了一种类似Django的非XML语法,同时支持内联表达式和可选的沙箱环境。它小巧快速,易于使用,是一个独立的模板引擎。Flask是一个基于Python的微型web框架,它允许您快速高效地编写web应用程序。
本系列教程将从Flask的角度出发,讲解Jinja2模板的基础知识。后续部分将介绍高级模板主题,并学习如何在基于Flask的应用程序中以模块化和可扩展的方式布局模板。
本教程假设您已掌握Flask基础知识,并了解使用virtualenv进行Python应用程序开发的环境设置最佳实践。
Flask自带Jinja2,因此我们只需要安装Flask即可。本系列教程建议使用Flask的开发版本,它包含更稳定的命令行支持,以及许多其他功能和改进。
pip install https://github.com/mitsuhiko/flask/tarball/master
在Flask中,我们可以在无需任何第三方模板引擎的情况下编写完整的web应用程序。让我们来看一个简单的if、else和{% %}
块的例子。更新home.html
页面如下:
{% extends 'base.html' %} {% block container %} <div class="top-pad"> {% for id, product in products.items() %} <div class="well"> <h2> <a href="//m.sbmmt.com/link/0bbfd30c6d7efe2fff86061e79c010db'product', key=id) }}">{{product['name']}}</a> <small>$ {{ product['price']}}</small> </h2> </div> {% endfor %} </div> {% endblock %}
观察这个模板如何扩展上层过滤器,如下所示:
{% extends 'base.html' %} {% block container %} <div class="top-pad"> {% for id, product in products.items() %} <div class="well"> <h2> <a href="//m.sbmmt.com/link/0bbfd30c6d7efe2fff86061e79c010db'product', key=id) }}">{{product['name']|upper}}</a> <small>$ {{ product['price']}}</small> </h2> </div> {% endfor %} </div> {% endblock %}
现在,如果您运行服务器,您应该会注意到产品名称全部大写。
在本教程中,我们学习了如何在基于Flask的应用程序中使用Jinja2布局模板结构。我们还了解了如何使用块在模板中利用继承。
在本系列的下一部分中,我们将学习如何编写自定义过滤器、自定义上下文处理器和宏。
此文章已更新,并包含来自Esther Vaati的贡献。Esther是Envato Tuts 的软件开发人员和撰稿人。
以上是用瓶中的jinja2模板:要点的详细内容。更多信息请关注PHP中文网其他相关文章!