导读:
模板是一个包含响应文本的文件(.html),jinja2是flask渲染模板的引擎,flask在一个名为templates的子文件夹中寻找模板,本文主要讲模板中的几种控制结构。
控制结构:
1.if条件控制:
{% if user%}
Hello, {{user}}!
{% else %}
Hello, World!
{% endif %}
2.for循环结构:
<ul>
{% for comment in comments %}
<li>{{ comment }}</li>
{% endfor %}
</ul>
3.宏(macro)结构,类此于函数:
{% macro render_comment(comment) %}
<li>{{comment}}</li>
{% endmacro %}
<ul>
{% for comment in comments %}
{{render_comment(comment)}}
{% endfor %}
</ul>
4.为了重复利用宏,可以把它单独放在一个文件中,需要的时候可以导入:
{% import 'macros.html' as macros %}
<ul>
{% for comment in comments %}
{{macros.render_comment(comment)}}
{% endfor %}
</ul>
5.需要在频繁使用的代码可以打包放在同一个文件中,需要的时候导入:
{% include 'common.html' %}
6.模板继承:
- 先创建一个名为base.html的基模板
<html>
<head>
{% block head %}
<title>{% block title %}{% endblock %} - My Application</title>
{% endblock %}
</head>
<body>
{% block body %}
{% endblock %}
</body>
</html>
- block标签定义的元素可以在衍生模板中修改
{% extends 'base.html' %}----extends声明这个模板衍生自base.html
{% block title %}Index{% endblock %}
{% block head %}
{{super()}}
<style>
</style>
{% endblock %}
{% block body %}
<h1>hello,world!</h1>
{% endblock %}