1、前言
前文已经介绍了很多关于 python 的算法和脚本的写法,在本文将开启python的 web 的开发,和java 类似的,对于 web 开发也需要引入框架,对于 python 的 web 开发来说常见的有 flask 和 django 两种,在本文中将要介绍的是 flask 框架,相对来说起步简单一点儿。
2、环境准备
在开发之前,需要先安装 flask 的依赖,如下所示:
pip install flask
案例中的项目使用的环境是 python3.8, 不同于 java, python 的环境会因为依赖产生各种各样的问题,为了保证环境的一致性,需要保证依赖的版本一致。那么如何保证环境和版本的一致呢?
# 通常采用 pip freeze 生成当前环境的所有依赖
pip freeze > requirements.txt
# 采用 pip install 来安装文件中的所有依赖
pip install -r requirements.txt
# 如果只安装本项目的依赖,则需要安装 pip install pipreqs
# 通过以下命令来生成项目依赖的版本
pipreqs . --encoding=utf8 --force
3、项目结构
对于web项目开发,也可以根据 mvc 的原则来划分项目,如下图所示:
- model 模块用来存放数据库表对应的实体
- script 模块用来存放数据库脚本和sh 脚本
- static 是项目的静态文件,这里使用的是前端后端不分离的模式,所以有静态模块和html末班
- templates html 模版文件
- web 即存放控制器的模块
- business 存放业务模块
- app 项目启动的入口
- utils 即项目木启动所需要的工具类
对于 web 项目的创建,可以使用 pycharm 中的新建项目模块完成项目的创建和基础配置,也可以手工创建文件的方式来创建项目。
4、项目app
flask
的入口文件为 app.py
, 基础的配置以及依赖都在其中设置。这里通常配置 web 的访问和数据库的配置信息,还有项目的启动设置。
4.1 蓝图 Blueprint
通常情况下页面访问配置为 @app.route
即可访问,但是需要将页面路由的配置设置在 app.py 中,如果业务复杂或者路由过多的情况,就不太合适。通常在开发中可以使用蓝图来处理这类问题。
# 引入蓝图
from flask import Blueprint
# 注册蓝图,设置蓝图的名称,以及路径,url_prefix即访问前缀, 类似与spring controller 类上标注的 requestmapping。Login 为蓝图的名称,要唯一。
login_blue_print = Blueprint('Login', __name__, url_prefix="/login")
# 在使用蓝图时,需要使用的注解为 @login_blue_print.route 而非 app.route