pythonFlask之蓝图Blueprint
Posted sysu_lluozh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pythonFlask之蓝图Blueprint相关的知识,希望对你有一定的参考价值。
一、蓝图介绍
蓝图是Flask提供的一个类,其具备Flask核心对象的很多功能,最重要的就是注册路由,通过Flask的蓝图,可以把整个项目分成不同的模块并在不同的模块中增加不同的功能,可以在一个应用或跨越多个项目共用蓝图
使用蓝图可以简化大型项目的开发难度,为Flask扩展了一种在应用中注册服务的集中式机制
二、创建蓝图
2.1 创建app.py作为Flask核心
注意:蓝图的注册需要放到main中进行注册,否则会进行报错
from flask import Flask, render_template, url_for, flash
from flask import request,session,g,redirect
from Control import commic_control,comment_control,user_control,admin_control
from flask_sqlalchemy import SQLAlchemy
from controller.userService import userService
import pymysql
app = Flask(__name__,static_url_path='/')
app.config['SECRET_KEY'] = "dsadsaffds" # 设置生成session ID
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@localhost:3306/'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app) # 实例化对象
app.register_blueprint(userService)
if __name__ == '__main__':
app.run(debug=True,host='127.0.0.1',port=3399)
2.2 注册蓝图
在controller/userService/__init__.py
文件中注册蓝图
from flask import Blueprint
userService = Blueprint('userService', __name__,url_prefix="/auth")
userService
:蓝图的名称,这是一个必须的参数,这里的蓝图名称就是构成视图函数 endpoint 的一部分url_prefix="/auth"
: 该蓝图下所有路由的前缀地址
2.3 使用
在controller/userService/auth.py
文件中
from controller.userService import userService
"""
登陆接口
"""
@userService.route('/login', methods=['POST'])
def login():
pass
三、应用场景
- 将不同的功能模块化
a. 一个项目可以具有多个Blueprint
b. 可以将一个Blueprint注册到任何一个未使用的URL下比如 “/”、“/sample”或者子域名
c. 在一个应用中,一个模块可以注册多次
d.Blueprint可以单独具有自己的模板、静态文件或者其它的通用操作方法,它并不是必须要实现应用的视图和函数的
e.在一个应用初始化时,就应该要注册需要使用的Blueprint - 构建大型应用
- 优化项目结构
- 增强可读性、易于维护
以上是关于pythonFlask之蓝图Blueprint的主要内容,如果未能解决你的问题,请参考以下文章