【python】Flask之蓝图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. 增强可读性、易于维护
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python Flask 蓝图是一种组织 Flask 应用程序的有效方式。它允许您将应用程序分解为可重用的模块,并使应用程序更易于管理和扩展。蓝图可以定义路由、视图、静态文件和模板等 Flask 应用程序中的各种组件。 以下是 Python Flask 蓝图的用法: 1. 创建蓝图 要创建蓝图,您需要使用 Flask 实例的 Blueprint() 函数。Blueprint() 函数需要两个参数:蓝图名称和蓝图文件的位置。 例如,以下代码创建了一个名为 'main' 的蓝图,并将其保存在 main.py 文件中: ``` from flask import Blueprint main_blueprint = Blueprint('main', __name__) ``` 2. 定义路由 要在蓝图中定义路由,您需要使用 Blueprint 对象的 route() 方法。该方法与 Flask 实例的 route() 方法类似。 例如,以下代码在 'main' 蓝图中定义了一个路由: ``` @main_blueprint.route('/') def index(): return 'Hello, World!' ``` 3. 注册蓝图 要在 Flask 应用程序中使用蓝图,您需要将其注册到应用程序中。可以使用 Flask 实例的 register_blueprint() 方法将蓝图注册到应用程序中。 例如,以下代码将 'main' 蓝图注册到 Flask 应用程序中: ``` from flask import Flask from main import main_blueprint app = Flask(__name__) app.register_blueprint(main_blueprint) ``` 4. 使用蓝图的静态文件和模板 蓝图也可以定义其自己的静态文件和模板。要使用蓝图的静态文件和模板,您需要在蓝图的文件夹中创建一个名为 'static' 和 'templates' 的文件夹,并将静态文件和模板放在这些文件夹中。 例如,以下代码显示了如何在蓝图中使用静态文件和模板: ``` main_blueprint = Blueprint('main', __name__, template_folder='templates', static_folder='static') @main_blueprint.route('/') def index(): return render_template('index.html') ``` 以上就是 Python Flask 蓝图的用法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sysu_lluozh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值