秦悦明的运维笔记

flask模板

1.简单实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from flask import Flask, render_template
from flask_script import Manager
app = Flask(__name__)
mamanger = Manager(app)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/user/<name>')
def user(name):
return render_template('user.html', name=name)
if __name__ == '__main__':
mamanger.run()

最简单的模板,render_template,跟django里面用法差不多。

模板支持if,for等语句。
更能支持宏macro等强大用法。
还可以支持继承.

2.模板继承

这里重点说说继承,extends

base.html

1
2
3
4
5
6
7
8
9
10
11
<html>
<head>
{% block head %}
<title>{% block title %} {% endblock %} - My application </title>
{% endblock %}
</head>
<body>
{% block body %}
{% endblock %}
</body>
</html>

user.html

1
2
3
4
5
6
7
8
9
10
{% extends "base.html" %}
{% block title %} index {% endblock %}
{% block head %}
{{ super() }}
<style>
</style>
{% endblock %}
{% block body %}
<h1>hello, {{ name }}!</h1>
{% endblock %}

block标签定义的元素可在衍生模板中修改。user.html里面重新定义了title,head,body。定义head的时候用到了base.html里面的内容,需要调用super()即可,跟面向对象语法里面的一模一样。
完整例子可以参看github https://github.com/gqdw/study-flk 里面的test-templates。