python框架_flask_基礎知識

Blueprint

  • 出現的原因:在使用flask進行一個項目編寫的時候,可能會有許多個模塊,如果把所有的這些模塊都放在一個views.py文件之中,那麼最後views.py文件必然臃腫不堪,並且極難維護
  • 原理:Blueprint其實本身只是對view上的接口進行了註冊,然後整體掛載在app上,Blueprint本身的目的就是組織多模塊的平行共存,避免直接在app上註冊view,Flask 中的Blueprint不是一個可插撥的應用,因爲它不是一個真正的應用,而是一套可以註冊 在應用中的操作,並且可以註冊多次。
  • 應用會在Flask層中進行統一管理,共享配置,通過註冊按需調用應用對象。
# 項目的init文件

def create_app(config_name):  # 啓動方式傳參
    """
    創建flask的應用對象
    :param config_name:     配置模式的模式的名字,['develop','product']
    :return:
    """
    app = Flask(__name__)

    # 根據配置模式的名字獲取配置參數的類
    config_class = CONFIG_MAP.get(config_name)  
    app.config.from_object(config_class)

    # 使用app初始化db
    db.init_app(app)

    # 初始化redis工具
    global redis_store
    redis_store = redis.StrictRedis(host=config_class.REDIS_HOST, port=config_class.REDIS_PORT)  # 利用config_class的類屬性訪問屬性值

    # 用flask-session,將session數據保存到redis中
    Session(app)

    # 爲flask補充csrf防護(前端發送POST請求,後端通過鉤子函數進行防護)
    CSRFProtect(app)

    # 添加自定義轉換器,放在應用建立後且註冊藍圖前
    app.url_map.converters['re'] = ReConverter

    # 註冊藍圖
    from ihome import api_1_0
    app.register_blueprint(api_1_0.api, url_prefix="/api_1_0")

    from ihome import web_html
    app.register_blueprint(web_html.html,)

    return app

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章