当前位置: 首页> 健康> 美食 > Flask蓝图

Flask蓝图

时间:2025/7/13 8:00:57来源:https://blog.csdn.net/weixin_48183870/article/details/140066174 浏览次数:0次

Flask蓝图

蓝图(Blueprint)在 Flask 中是一个用于组织多个模块化子应用的强大工具。它允许开发者将不同的功能模块划分到不同的包或目录中,使得大型项目更加易于管理和维护。

一、不使用蓝图

在不使用蓝图的情况下,可能会将所有的视图函数放在一个文件中,或者将它们分散在多个文件中,但都在同一个包内。

  • 目录结构

    • -templates/
      -views/__init__.pyuser.pyorder.py
      -app.py
      
  • 文件内容

    • # app.py
      from views import app
      if __name__ == '__main__':app.run()
      
    • # init.py
      from flask import Flask
      app = Flask(__name__)
      from . import order
      from . import user
    • # user.py
      from . import app
      @app.route('/user')
      def user():return 'user'
      

二、使用蓝图

使用蓝图可以更好地组织项目结构,特别是在中大型系统中。

  • 目录结构

    • - flask_project/			# 项目名- src/					# 核心文件- __init__.py			# 包的初始化文件,实例化得到app对象- static/				# 静态文件- templates/			# 模板- views/				# 视图函数和类- user.py- order.py- manage.py 				# 启动文件
  • 文件内容

    • # manage.py
      from src import app
      if __name__ == '__main__':app.run(debug=True, port=3333)
      
    • # __init__.py
      from flask import Flask
      app = Flask(__name__)from .views.user import user_app
      app.register_blueprint(user_app)
    • # user.py
      from flask import Blueprint
      user_app = Blueprint('user_app', __name__, url_prefix='/user')@user_app.route('/')
      def user_index():return 'User Index Page'
      
  • 使用蓝图步骤

    1. 实例化蓝图对象: 在每个视图模块中,创建一个蓝图实例,并指定蓝图的名字和模板文件夹(如果与默认位置不同)。

      from flask import Blueprint
      user_app = Blueprint('user', __name__, template_folder='../templates')
      
    2. 使用蓝图注册路由和请求扩展: 使用蓝图对象来注册路由和请求钩子。

      @user_app.route('/login')
      def login():return 'login'
      
    3. 在应用中注册蓝图: 在主应用实例中,通过 register_blueprint 方法注册蓝图。可以指定一个 url_prefix,使得所有蓝图中的路由都会添加该前缀。

      from flask import Flask
      app = Flask(__name__)from . import user
      app.register_blueprint(user.user_app, url_prefix='/user')
      

关键字:Flask蓝图

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: