安装准备
python3 -V && pip3 -V
pip3 install pipenv
pipenv
pipenv shell
PyCharm的环境配置在这里就不做过多解释了,这里针对后续的代码进行讲解。
开始实践
Flask 原理是在App初始化时,将蓝图和App进行绑定来实现Web路由功能,路由的实现是所有项目中的第一步。
入口文件
在项目开始之前,定义一个入口文件,让请求实例化App,入口文件需要做的是初始化配置文件、引入控制器、初始化数据库等操作。
def create_app():
app = Flask(__name__)
# 导入config中的配置文件
app.config.from_object('app.config.setting')
app.config.from_object('app.config.secure')
return app
在启动文件中进行调用,启动文件中需要加入判断,原因后续再做解释。
from app.app import create_app
app = create_app()
if __name__ == '__main__':
app.run(debug =True,port=81,host= '0.0.0.0')
路由
Flask是用蓝图实现的路由功能,在入口文件中添加注册蓝图的方法,实现引入和注册。
from flask import Blueprint
login = Blueprint('login', __name__)
@login.route('/login')
def loginIndex():
return "login Hello"
在app实例初始化时,引入蓝图模块
from flask import Flask
def create_app():
app = Flask(__name__)
# 导入config中的配置文件
app.config.from_object('app.config.setting')
app.config.from_object('app.config.secure')
# 注册并导入蓝图
register_blue(app)
return app
def register_blue(app):
from app.api.login import login
app.register_blueprint(login)
优化路由器
在每一个路由器中可以添加一个装载器,在初始化来依次加载Flask中的蓝图,已到达优化路由器的目的。
class BaseRoutes:
def __init__(self, name):
self.name = name
self.loader = []
def route(self, rule, **options):
def decorator(f):
self.loader.append((f, rule, options))
return f
return decorator
def register(self, bp, url_prefix=''):
# 依次注册蓝图
for f, rule, options in self.loader:
endpoint = options.pop("endpoint", f.__name__)
bp.add_url_rule(url_prefix + rule, endpoint, f, **options)
api文件中使用优化后的装载器代码如下:
from app.libs.BaseRoutes import BaseRoutes
api = BaseRoutes('login')
@api.route('/login/loginHandle', methods=['GET', 'POST'])
def loginHandle():
return "login Hello"
至此,Flask路由的功能开发完毕了,欢迎来学习交流,私信我,一起加油。
更多推荐
Flask 实战笔记01 - Blueprint实现Web路由器
发布评论