zoukankan      html  css  js  c++  java
  • flask中的蓝图 Blueprint

    模块化

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

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

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

    • 一个应用可以具有多个Blueprint

    • 可以将一个Blueprint注册到任何一个未使用的URL下比如 “/”、“/sample”或者子域名

    • 在一个应用中,一个模块可以注册多次

    • Blueprint可以单独具有自己的模板、静态文件或者其它的通用操作方法,它并不是必须要实现应用的视图和函数的

    • 在一个应用初始化时,就应该要注册需要使用的Blueprint

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

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

    使用蓝图的四个步骤:

    第一步:创建一个蓝图目录,例如users,并在__init__.py文件中创建蓝图对象

    from flask import Blueprint

    # 等同于原来在 manage.py里面的 app = Flask()
    users=Blueprint('users',__name__)

    第二步:在这个蓝图目录下, 创建views.py文件,保存当前蓝图使用的视图函数

    from  . import users
    @users.route("/users02")
    def user_home():
        return "个人中心"

    第三步:在users/init.py中引入views.py中所有的视图函数

    from flask import Blueprint
    
    users=Blueprint('users',__name__)
    
    from .views import *

    第四步:在主应用manage.py文件中的app对象上注册这个users蓝图对象

    from flask import Flask, session
    from settings.dev import DevConfig
    
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__, template_folder="templates", static_folder="static")
    
    app.config.from_object(DevConfig)
    
    
    # 注册这个**users**蓝图对象
    from users import users
    app.register_blueprint(users, url_prefix='/users01')
    
    
    
    # SQLAlchemy基本配置
    db = SQLAlchemy(app)
    
    if __name__ == '__main__':
        db.create_all()
        app.run()

    第五步测试:当这个应用启动后,通过/users01/users02   可以访问到蓝图中定义的视图函数

  • 相关阅读:
    从零开始入门 K8s | 应用编排与管理
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    203. Remove Linked List Elements
    183. Customers Who Never Order
    182. Duplicate Emails
    181. Employees Earning More Than Their Managers
    1261. Find Elements in a Contaminated Binary Tree
    1260. Shift 2D Grid
  • 原文地址:https://www.cnblogs.com/one-tom/p/10678644.html
Copyright © 2011-2022 走看看