• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

PythonFlask蓝图按功能模块拆分

武飞扬头像
对抗路、余温
帮助1

随着flask程序越来越复杂,我们需要对程序进行模块化的处理,之前学习过python的模块化管理,于是针对一个简单的flask程序进行模块化处理

简单来说,Blueprint 是一个存储视图方法的容器,这些操作在这个Blueprint 被注册到一个应用之后就可以被调用,Flask 可以通过Blueprint来组织URL以及处理请求。

Flask使用Blueprint让应用实现模块化,在Flask中,Blueprint具有如下属性:

  • 一个项目可以具有多个Blueprint
  • 可以将一个Blueprint注册到任何一个未使用的URL下比如 “/”、“/sample”或者子域名
  • 在一个应用中,一个模块可以注册多次
  • Blueprint可以单独具有自己的模板、静态文件或者其它的通用操作方法,它并不是必须要实现应用的视图和函数的
  • 在一个应用初始化时,就应该要注册需要使用的Blueprint

但是一个Blueprint并不是一个完整的应用,它不能独立于应用运行,而必须要注册到某一个应用中。

Blueprint对象用起来和一个应用/Flask对象差不多,最大的区别在于一个 蓝图对象没有办法独立运行,必须将它注册到一个应用对象上才能生效

使用蓝图可以分为以下操作:

1.models拆分,主文件初始化db

  1.  
    from flask import Flask
  2.  
    # 导入的db
  3.  
    from models import db
  4.  
    app = Flask(__name__, static_folder='assets')
  5.  
    # 从配置文件加载配置
  6.  
    app.config.from_object('conf.Config')
  7.  
     
  8.  
    # 数据库初始化,绑定到app
  9.  
    db.init_app(app)

2.创建一个蓝图的包,在这个蓝图目录下, 创建views.py文件,保存当前蓝图使用的视图函数

  1.  
    from flask import Blueprint, render_template
  2.  
     
  3.  
    accounts = Blueprint("accounts", __name__, template_folder="templates", static_folder="../assets")
  4.  
     
  5.  
     
  6.  
    @accounts.route('/login')
  7.  
    def login():
  8.  
    """ 登录页面 """
  9.  
    return render_template('login.html')
  10.  
     
  11.  
     
  12.  
    @accounts.route('/register')
  13.  
    def register():
  14.  
    """ 注册 """
  15.  
    return render_template('register.html')
学新通

3.注册蓝图下的视图函数到app

  • 当我们在应用对象上注册一个蓝图时,可以指定一个url_prefix关键字参数(这个参数默认是/)
  1.  
    from flask import Flask
  2.  
    from models import db
  3.  
     
  4.  
    from accounts.views import accounts
  5.  
    from qa.views import qa
  6.  
     
  7.  
    app = Flask(__name__, static_folder='assets')
  8.  
    # 从配置文件加载配置
  9.  
    app.config.from_object('conf.Config')
  10.  
     
  11.  
    # 数据库初始化,绑定到app
  12.  
    db.init_app(app)
  13.  
     
  14.  
    # 注册蓝图
  15.  
    app.register_blueprint(accounts, url_prefix="/accounts")
  16.  
    app.register_blueprint(qa, url_prefix="/qa")
  17.  
     
  18.  
     
  19.  
     
学新通

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfikbf
系列文章
更多 icon
同类精品
更多 icon
继续加载