Pyhton3框架Flask之蓝图Blueprint

博客介绍了Flask框架中Blueprint的作用,在编写项目时若将所有模块写在一个.py文件中会导致文件臃肿难维护,引入Blueprint可将一个.py文件分离到多个模块。还给出了模块分离后的结构,包括入口文件、前后台包及视图文件等。

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

        Blueprint是flask框架中进行多模块应用的编写方式之一,在使用flask框架进行编写项目的时候,可能会有许多个模块,如前台和后台再有手机版.....。如果把所有的模块都写在一个.py文件中,那么这个文件将非常的臃肿,极难维护,而且看也也不美观。所以flask框架就引入了Blueprint(蓝图)的概念。可以将一个.py文件分离到多个模块中。

      模块分离后的结构为

        此文件结构中manage.py为入口文件,包admin为后台,包home为前台,views.py文件为视图

        业务编写,定义各模块中的Blueprint

        admin模块 __inti__.py

from flask import Blueprint

admin=Blueprint('admin',__name__)  #定义蓝图对象

import app.admin.views

  视图views.py

from . import admin

@admin.route('/')
def index():
    return '后台在此'

  home模块 __init__.py

from flask import Blueprint

home=Blueprint('home',__name__)

import app.home.views

  视图views.py

from . import home

@home.route('/')
def index():
    return '我是前台'

  项目app下的配置文件__init__.py

from flask import Flask

app=Flask(__name__)
#app.debug=True

from app.home import home as home_blueprint     #引入蓝图对象
from app.admin import admin as admin_blueprint

app.register_blueprint(home_blueprint)
app.register_blueprint(admin_blueprint,url_prefix='/admin')

  入口文件manage.py

from app import app

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

  运行入口文件

 

 

总结:

转载于:https://www.cnblogs.com/tngh/p/9564060.html

Flask 框架中,蓝图Blueprint)是用于实现模块化应用的重要工具,特别适用于中大型项目。通过蓝图,可以将不同的功能模块(如用户认证、博客管理等)进行分离,并在主应用中灵活注册。 ### 创建蓝图 首先,在一个模块文件中创建蓝图对象。通常,该蓝图对象会附加一个 `url_prefix`,用于指定该蓝图下的所有路由前缀。 例如,在 `auth.py` 中创建一个名为 `auth` 的蓝图: ```python from flask import Blueprint auth = Blueprint('auth', __name__, url_prefix='/auth') @auth.route('/login') def login(): return "Login Page" ``` 在上述代码中,`Blueprint` 的构造函数接受三个主要参数: - `'auth'`:蓝图的名称,用于唯一标识该蓝图。 - `__name__`:当前模块的名称,用于确定蓝图的根目录。 - `url_prefix='/auth'`:为该蓝图下所有视图添加统一的 URL 前缀 `/auth`[^4]。 ### 注册蓝图Flask 应用工厂函数中(通常位于 `__init__.py` 或 `app.py`),通过 `app.register_blueprint()` 方法注册蓝图对象。 例如: ```python from flask import Flask from .auth import auth # 假设蓝图定义在 auth.py 中 def create_app(): app = Flask(__name__) app.register_blueprint(auth) return app ``` 在注册蓝图时,还可以指定额外的参数,如 `url_prefix`,以覆盖蓝图定义时的默认前缀: ```python app.register_blueprint(auth, url_prefix='/user') ``` 这将使 `/login` 路由变为 `/user/login`[^2]。 ### 多蓝图注册 一个 Flask 应用可以注册多个蓝图,例如同时注册 `auth` 和 `blog` 蓝图: ```python from .auth import auth from .blog import blog def create_app(): app = Flask(__name__) app.register_blueprint(auth, url_prefix='/auth') app.register_blueprint(blog, url_prefix='/blog') return app ``` 这样,不同的功能模块可以被清晰地划分,并通过不同的 URL 前缀进行访问[^1]。 ### 蓝图的模板和静态文件支持 蓝图可以拥有独立的模板目录和静态资源目录。例如,在 `Blueprint` 构造时可以指定: ```python auth = Blueprint('auth', __name__, template_folder='templates', static_folder='static') ``` 当 Flask 查找模板时,会优先在蓝图的 `template_folder` 中查找,从而实现模块化的模板管理[^3]。 ### 蓝图的 URL 规则 蓝图中的视图函数可以通过 `@blueprint.route()` 装饰器定义,也可以使用 `add_url_rule()` 方法动态添加。例如: ```python def register_views(app): @app.route('/register') def register(): return "Register Page" auth = Blueprint('auth', __name__) register_views(auth) ``` ### 蓝图的注册时机 蓝图应该在应用初始化阶段完成注册,以确保在启动服务器前所有路由规则都已加载。通常在 `create_app()` 函数内部完成蓝图的导入和注册[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值