← 返回首页
Python3基础教程(七十八)
发表时间:2022-05-13 11:02:16
使用模板

Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能。

1.模板

模板简单来说就是用来渲染视图的。也就是传说中的MVC:Model-View-Controller,中的View层。Flask通过render_template()函数来实现模板的渲染。和Web框架类似,Python的模板也有很多种。Flask默认支持的模板是jinja2,所以我们以下命令安装jinja2。

pip3 install jinja2

2.实例

我们把上小节的用户登录的案例,改为使用模块实现。

项目结构图如下:

1).新建templates目录用来存放模板文件,创建以下三个模板文件。

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
  <h1 style="font-style:italic">首页</h1>
</body>
</html>

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <h1>用户登录</h1>
  <hr>
  {% if message %}
  <p style="color:red">{{ message }}</p>
  {% endif %}
  <form action="/signin" method="post">
    <p><input name="username" placeholder="用户名" value="{{ username }}"></p>
    <p><input name="password" placeholder="密码" type="password"></p>
    <p><button type="submit">登录</button></p>
  </form>
</body>
</html>

login_success.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Welcome, {{ username }}</title>
</head>
<body>
  <p>Welcome, {{ username }}!</p>
</body>
</html>

2).编写app.py,服务器端程序。

# -*- coding: utf-8 -*-
# @Time : 2022/5/14 10:27
# @File : app.py
# @Software : PyCharm

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def home():
    return render_template('index.html')

@app.route('/signin', methods=['GET'])
def signin_form():
    return render_template('login.html')

@app.route('/signin', methods=['POST'])
def signin():
    username = request.form['username']
    password = request.form['password']
    if username=='admin' and password=='123456':
        return render_template('login_success.html', username=username)
    return render_template('login.html', message='用户名或者密码错误。', username=username)

if __name__ == '__main__':
    app.run(host='127.0.0.1',port=8080,debug = True)

运行结果:

再在浏览器地址栏输入http://localhost:8080/signin,会显示登录表单:

输入预设的用户名admin和口令123456,登录成功:

除了Jinja2,常见的模板还有:

小结: Flask通过render_template()函数来实现模板的渲染。和Web框架类似,Python的模板也有很多种。Flask默认支持的模板是jinja2