Flask中的迴圈引用/匯入問題演示以及解決方案 | 藍圖的使用與解析 | 藍圖額外用法

FG成長空間發表於2018-10-11
1- 模擬迴圈匯入現象
  • 建立檔案loop_main.py和檔案loop_goods.py
    loop_main.py中寫入如下程式碼:

    from flask import Flask
    from loop_goods import goods
    
    app = Flask(__name__)
    
    
    @app.route("/")
    def index():
        return "index page"
    
    
    if __name__ == "__main__":
        print(app.url_map)
        app.run()
    

    loop_goods.py中寫入如下程式碼:

    from loop_main import app
    
    
    @app.route("/goods")
    def goods():
        return "goods page"
    
  • 執行檔案,發生迴圈匯入,報錯如下:

    執行報錯

  • 報錯原因解析,即產生了迴圈匯入問題

    解析


2- 相應解決方案
  • 第一種:有一方 作出讓步(不推薦)

    成功

  • 第二種:函式後補裝飾器(耦合性高)

    裝飾器實現

    解析
    裝飾器

  • 第三種:使用藍圖實現模組劃分操作(推薦)

    藍圖實現

  • 注意事項,即便使用藍圖,也可能產生迴圈匯入問題
    解決方案是進行交錯匯入,編碼時規範下就可避免

    在這裡插入圖片描述


3- 藍圖的額外用法
  • 新增訪問字首

    在這裡插入圖片描述

  • 建立藍圖物件,當兩者不同名的時候

    在這裡插入圖片描述
    在這裡插入圖片描述

  • 當藍圖模組自成一體的時候,指定模板檔案與靜態檔案所在位置

    在這裡插入圖片描述

相關文章