章节索引 :

Flask 项目实战 1: 功能介绍

在 Flask 教程的最后,讲解一个涉及多个 Flask 知识点的综合案例,一个功能完整的 Web 应用程序 —— 待做清单。该综合案例较大,将其分为 3 个部分:

  • Flask 项目实战 1:功能介绍;
  • Flask 项目实战 2:后端实现;
  • Flask 项目实战 3:前端实现。

本小节首先介绍了待做清单的功能,然后讲解了程序的总体结构。

1. 功能简介

本节使用 Flask 开发一个功能完整的 Web 应用程序 —— 待做清单,该 Web 应用程序记录待做事项。程序提供了用户注册的功能,用户登录后,录入的待做事项被记录在服务端,如果换一台机器,使用浏览器登录后,仍然能够看到已经录入的待做事项。

下面的视频演示了待做清单的功能:

2. 涉及的知识点

本节开发的待做清单程序,在保持程序简短时,尽可能融入了更多的知识点,包括:

  • 模板
  • WTF 表单和表单验证
  • 蓝图
  • ORM 访问数据库
  • 会话 Session

3. 运行程序

3.1 源程序下载

3.2 源文件目录

程序由多个源文件构成,如下所示:

源文件 描述
db.sql 创建数据库的 SQL 脚本文件
app.py Flask 应用程序实例以及配置
main.py Flask 应用程序的入口
db.py 提供访问数据库的功能函数
users.py 实现蓝图 users,提供登录、注册的功能
todos.py 实现蓝图 todos,提供增加、修改、删除待做事项 todo 的功能
templates/index.html 首页的页面模板
templates/login.html 登录的页面模板
templates/register.html 注册的页面模板
static/style.css 样式文件
static/script.js 调用后端服务的接口

3.3 安装相关的库

为了使用 Flask 框架、数据库 ORM、表单验证等模块,使用 pip3 依次安装:

pip3 install flask
pip3 install pymysql
pip3 install SQLAlchemy
pip3 install flask-sqlalchemy
pip3 install wtforms
pip3 install flask-wtf

3.4 设置数据库

例子使用 mysql 数据库,用户名为 root,密码为 ‘123456’,可以在 db.py 中修改用户名和密码。

启动 mysql 后,执行数据库脚本 db.sql 创建数据库 todoDB:

mysql> source db.sql

3.5 运行程序

main.py 是程序的入口,执行如下命令启动程序:

$ python3 main.py

4. 程序的结构

图片描述

程序的核心结构如上图所示,程序由前端与后端构成。

前端的核心操作如下:

  • 在 login.html 中,通过 POST 方法向页面 /users/login 提交表单请求完成登录;
  • 在 register.html 中,通过 POST 方法向页面 /users/register 提交表单请求完成登录;
  • 访问页面 /users/logout 退出系统;
  • 在 script.js 中,函数 addTodo () 通过 Ajax 向页面 /todos/add 请求增加待做事项;
  • 在 script.js 中,函数 updateTodo () 通过 Ajax 向页面 /todos/update 请求更新待做事项;
  • 在 script.js 中,函数 deleteTodo () 通过 Ajax 向页面 /todos/delete 请求删除待做事项。

后端的核心操作如下:

  • Flask 程序使用了 2 个蓝图:users 和 todos;
  • 蓝图 users 定义了页面 /users/login 、/users/register、/users/logout,登录和注册的页面处理函数是 login 和 register,最终调用 db.js 中的数据库访问函数 login 和 register,实现登录和注册的功能;
  • 蓝图 todos 定义了页面 /todos/add、/todos/update、/todos/delete,它们的页面处理函数是 addTodo、updateTodo、deleteTodo,最终调用 db.js 中的数据库访问函数 addTodo、updateTodo、deleteTodo,实现增加、更新、删除待做事项的功能。

5. 小结

本小节介绍了待做清单的功能和程序结构,使用思维导图描述如下:

图片描述