Flask蓝图实战:如何将路由拆分至独立文件

听雨眠
听雨眠
发布时间:2026-10-13| 1人浏览过
原创

本文详解Flask中Blueprint(蓝图)的核心概念与应用场景,展示如何通过蓝图将大型应用的路由逻辑拆分至user.py、admin.py等独立文件中。通过代码实例演示蓝图的初始化、注册及URL前缀配置,帮助开发者实现项目的模块化与结构清晰化。

本文主要介绍如何在Flask框架中使用蓝图(Blueprint)技术,将路由逻辑分离并编写到不同的文件中,具体实现方案如下。

Flask引入了蓝图(blueprints)这一概念,旨在支持应用组件的构建以及通用设计模式的实现。蓝图能够显著简化大型应用的开发流程,并为Flask扩展在应用中注册操作提供了核心机制。一个Blueprint对象的行为模式与Flask应用对象类似,但它本身并非一个完整的应用,而是用于描述如何构建或扩展应用的结构蓝图。

Flask中的蓝图主要适用于以下几种场景:

将大型应用分解为多个蓝图的集合。这是处理大型应用的理想方式,项目可以实例化一个应用对象,初始化多个扩展,并注册一组蓝图。

在应用中通过URL前缀或子域名注册蓝图。URL前缀或子域名中的参数默认会成为该蓝图下所有视图函数的共同参数。

在同一应用中,通过不同的URL规则多次注册同一个蓝图。

利用蓝图提供模板过滤器、静态文件、模板及其他功能。蓝图不一定非要实现应用或视图函数。

在初始化Flask扩展时,通过注册蓝图来处理上述情况。

Flask中的蓝图并非即插即用的应用,因为它本质上不是一个应用,而是一组可以注册到应用上、甚至多次注册的操作集合。为什么不直接使用多个应用对象?虽然可以实现(参见应用调度),但这样会导致应用配置分离,并在WSGI层进行管理。

蓝图作为Flask层面的分割替代方案,能够共享应用配置,并在必要时更改所注册的应用对象。其局限性在于,一旦应用创建后,无法在不销毁整个应用对象的情况下撤销蓝图的注册。

以上内容参考自Flask 0.10.1版本文档。

测试项目的目录结构如下:

user.py文件内容:

#coding:utf-8 
#user 
from flask import Blueprint, render_template, redirect 
user = Blueprint('user',__name__) 
 
@user.route('/index') 
def index(): 
  return render_template('user/index.html') 
@user.route('/add') 
def add(): 
  return 'user_add' 
@user.route('/show') 
def show(): 
  return 'user_show' 

admin.py文件内容:

# coding:utf-8 
#admin.py 
from flask import Blueprint,render_template, request 
admin = Blueprint('admin',__name__) 
 
@admin.route('/index') 
def index(): 
  return render_template('admin/index.html') 
@admin.route('/add') 
def add(): 
  return 'admin_add' 
@admin.route('/show') 
def show(): 
  return 'admin_show' 

view.py(主应用文件)内容:

# coding:utf-8 
from flask import Flask,request,render_template 
from admin.admin import admin 
from user.user import user 
app=Flask(__name__) 
app.register_blueprint(admin,url_prefix='/admin') 
app.register_blueprint(user, url_prefix='/user') 
if __name__ == '__main__': 
  app.run() 

总结

以上是关于Flask中使用蓝图将路由拆分到不同文件的完整实例解析,希望能对大家有所帮助。感兴趣的朋友还可以继续阅读本站的相关文章:

《Flask使用Session保存登录状态及拦截未登录请求代码》

《浅谈Flask截获所有访问及before/after_request修饰器》

《Flask中主动抛出异常及统一异常处理代码示例》

如有不足之处,欢迎留言指正。感谢朋友们对本站的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。