使用 Python 从 0 开发属于你的个人管理系统 08 篇 | 如何使用模板引擎渲染数据(上)

当你写了静态的 HTML 网页时,它没有任何交互。更多的,它只能作为一种展示,而我们通常写的网页系统,都是需要数据交互的,如何将静态的 View 层(静态页面)和在业务逻辑层得到的数据打通呢?

有一种常用的方式就是使用模板引擎,我们可以在 HTML 中定义一些模板语言(变量),而在业务逻辑中将得到的变量数据传给定义好的模板语言,这样就能让静态的网页「动」起来,也就是模板引擎渲染数据。

今天,主要给你介绍一下,Flask 中的 Jinja2 模板引擎的使用,以及那些常用到的模板语言。

接着我们上一篇的文件代码,我们创建了数据库并从中插入了数据:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config

app = Flask(__name__)
# 使用配置
app.config.from_object(config)

# 实例化数据库对象
db = SQLAlchemy(app)

# 数据模型
class Fitness(db.Model):
    __tablename__ = 'fitness'

    id = db.Column(db.Integer, primary_key=True)
    sport_name = db.Column(db.String(100))
    calorie = db.Column(db.Float)

那么现在,如果我们想要获取数据库中的相关数据,然后将它们展示到首页中,如何操作呢?

比如要获取第二条的运动名称,展现到首页上,可能你会这样:

@app.route('/')
def index():
    fitness = Fitness.query.get(2)
    return fitness.sport_name

这样你访问首页的时候可以得到结果:

虽然这样简单粗暴可以,但是我们的页面不仅仅是获取这么一个数据,并且我们需要将数据展示到不同的地方去,这时候,我们就可以使用模板语言来定义了。

模板变量参数的使用

进入 templates 目录,创建一个 index.html 模板文件:

<html>

        <head>
                <title>{{name}}健身记录</title>
        </head>

        <body>
            运动名称: {{sport_name}} ,消耗的卡路里:{{cal}}
        </body>

</html>


我们在这里分别定义了三个变量,name,sport_name,cal

本文隐藏内容 登陆 后才可以浏览

ok,这是 Jinja2 模板引擎最常用的使用方式,你可以先熟悉熟悉,下一篇我还会给你介绍它的其它你需要了解使用方式,比如模板之间如何引用以及继承。如何使用 Jinja2 本身提供的方法等,那么我们下一篇见,peace!

发表回复