1、模板Template,是包含响应文本的文件(即DHTML文本),其中包含用占位变量{{ variable }}表示的动态部分,其具体值在请求的上下文中才能知道,并使用真实值替换变量,再返回最终的响应文本,这一过程称为渲染render。
{{ 变量|过滤器 }} 可以完成对变量的一些基本运算操作,如大小写转换、取绝对值等等
2、模板中也可以包含控制语句(运算逻辑),如if else endif for endfor等。格式为{% if 条件 %} {% else %} {% endif %} {% for element in elements %} {% endfor %}等
3、模板可以继承,可以通过将共性代码编写为基础模板(base.html)并在其它模板中引用基础模板,格式为{% extends ‘base.html’ %}
4、在基础模板中,可以定义“代码块”,在其它继承模板中,引用相同的“代码块”并填写内容,就可以实现对模板中该代码块内容的替换。代码块由 {% block block_name %} 和 {% endblock %}来定义
5、 {# 注释 #} 用来写注释。
建立模板目录,并创建模板文件
(myvenv) ~/flask_tutorial/flask$ mkdir app/templates
#在新建的templates中新建一个index.html
(myvenv) ~/flask_tutorial/flask/app/templates$ touch index.html
···
创建一个基类模板
```shell
(myvenv) ~/flask_tutorial/flask/app/templates$ touch base.html
修改routes.py路由文件,用对应的模板替换对应的路由函数。
from flask import render_template
from app import app
@app.route('/')
@app.route('/index')
def index():
user = {'username':'duke'}
posts = [
{
'author':{'username':'刘'},
'body':'这是模板模块中的循环例子~1'
},
{
'author': {'username': '忠强'},
'body': '这是模板模块中的循环例子~2'
}
]
return render_template('index.html',title='我的',user=user,posts=posts)