【Flask】蓝图

博客围绕Flask蓝图展开,阐述了使用蓝图的原因,即当Flask程序视图函数众多时,蓝图可划分结构,便于管理。介绍了Flask程序结构,包括文件夹创建和总入口文件设置。还说明了创建并注册蓝图的方法,最后给出了大蓝图相关参考链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么要有蓝图

当flask程序里面视图函数非常多时,我们需要一个目录结构去管理我们的程序,这就需要蓝图去划分结构,方便管理我们的程序

Flask程序结构

在这里插入图片描述
一般是在Pycharm创建项目名之后,再创建一个同名的文件夹(crm),在该文件夹中创建templates和views等文件夹分别存放模板和视图函数,在crm文件夹同级下再创建一个manage.py(也可叫app.py, 名称自取)用于函数的总入口,manage.py代码如下

from crm import create_app

app = create_app()  # 实例化flask对象
if __name__ == '__main__':
    app.run()

该代码实际上导入了__init__.py文件中的create_app函数,注意名为__init__.py
文件导入其中的函数时,可以不加模块名
,下面这种导入方法也可以

from crm import __init__

app = __init__.create_app()      # 实例化flask对象

if __name__ == '__main__':
    app.run()

创建并注册蓝图

  1. 创建蓝图

在上面的视图函数文件夹中,分别有account.pyuser.py两个模块,下面分别在这两个模块中创建蓝图,

  • user.py代码如下:
from flask import Blueprint

uc = Blueprint('uc',__name__)         #创建蓝图

@uc.route('/list')           #注意装饰器后面的写法
def list():
    return 'List'

@uc.route('/detail')
def detail():
    return 'detail'
  • account.py代码如下:
from flask import Blueprint,render_template

ac = Blueprint('ac',__name__)

@ac.before_request                 #在访问路由/login或/logout时会在请求响应前执行x1函数
def x1():
    print('ac.before_request')

@ac.route('/login')
def login():
    return render_template('login.html')

@ac.route('/logout')
def logout():
    return 'Logout'
  1. 注册蓝图
    在创建好蓝图之后,还需要与Flask实例对象进行绑定才能生效,将相关代码写在__init__.py中,代码如下:
from flask import Flask
from .views.account import ac
from .views.user import uc

def create_app():

    app = Flask(__name__)

    # @app.before_request            #在注册蓝图页面,使用app.before_request装饰,在所有请求响应之前触发x1函数
    # def x1():
    #   print('app.before_request')

    app.register_blueprint(ac)
    app.register_blueprint(uc,url_prefix='/api')        #可以在访问url加前缀
    return app

大蓝图

https://www.cnblogs.com/wupeiqi/articies/7552008.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Bug 挖掘机

支持洋子

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

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

打赏作者

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

抵扣说明:

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

余额充值