Flask蓝图

Flask蓝图

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

一、不使用蓝图

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

  • 目录结构

    • -templates/
      -views/
        __init__.py
        user.py
        order.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')
      

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值