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

三、应用场景

  1. 将不同的功能模块化
    a. 一个项目可以具有多个Blueprint
    b. 可以将一个Blueprint注册到任何一个未使用的URL下比如 “/”、“/sample”或者子域名
    c. 在一个应用中,一个模块可以注册多次
    d.Blueprint可以单独具有自己的模板、静态文件或者其它的通用操作方法,它并不是必须要实现应用的视图和函数的
    e.在一个应用初始化时,就应该要注册需要使用的Blueprint
  2. 构建大型应用
  3. 优化项目结构
  4. 增强可读性、易于维护

以上是关于pythonFlask之蓝图Blueprint的主要内容,如果未能解决你的问题,请参考以下文章

flask之blueprint和url_for的关系

二十六:视图之蓝图的概念和基本使用

第六章 Flask——蓝图(BluePrint)对象

Flask初学者:蓝图Blueprint

python | 对 Flask 蓝图(Blueprint)的理解

Flask中的蓝图(BluePrint)