[Flask筆記]Flask Blueprint 藍圖,建立步驟紀錄

這次 Flask 藍圖 Blueprint 建立步驟筆記,使用 Docker 管理,後端語言為 python,前端使用純 HTML + CSS + JavaScript,開發的平台是使用 VSCode

Flask Blueprint 藍圖建立步驟

1. 外層檔案首頁建置

先有一個通用首頁,到時候會變成用 “藍圖路由” 方式進入到各頁面。

通用首頁
通用首頁

2. 拉入開發的資料夾

下圖中,左側那些是外層檔案,直接把要使用藍圖的資料夾拉入。

拉入寫好程式碼的資料夾
拉入寫好程式碼的資料夾

3. 加入 Flask Blueprint 語法

from object_detection.app import object_detection

app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False

app.config.from_object(__name__)
app.register_blueprint(object_detection, url_prefix='/object_detection',template_folder='./object_detection/templates',static_folder="./object_detection/static")

下面這個截圖最後面漏截 ,static_folder=”./object_detection/static”),以上面這個程式碼為主。

加入 Flask Blueprint 語法
加入 Blueprint 語法

4. 增加必要檔案

打開開發資料夾,增加 init.py 檔案,檔案內容留空即可。

增加 init.py 檔案
增加 init.py 檔案

5. 引入藍圖 Blueprint 語法

在開發資料夾的 app.py 引入 Blueprint 及藍圖語法。此時外層的 app.py 就串接完成開發資料夾的藍圖了

from flask import Flask, render_template, request, Blueprint

object_detection = Blueprint("object_detection", __name__, template_folder="../object_detection/templates",static_folder="../object_detection/static")
引入 Blueprint 語法
引入 Blueprint 語法

6. 修改路由

把開發資料夾的路由 @app.route 調整成藍圖的路由 @object_detection.route

修改路由
修改路由

7. 修改相對路徑

把所有 HTML 相對路徑的 ../ 改成 ./ ,因為 Flask 藍圖特性是把 static 和 templates 所有檔案壓平化。除了 CSS 想要往上一層找之外,其餘改為 ./ 即可。

下圖為所有 HTML 相對路徑的 ../ 改成 ./

修改相對路徑
修改相對路徑

下圖為 CSS 想要往上一層找,保留 ../

保留 JS 相對路徑
保留 JS 相對路徑

8. 本地端開發需重啟 container

重啟 container 才會生效!

可能出現的問題

藍圖多個串聯,HTML 檔名不能相同

藍圖多個串聯寫法:

檔案名稱若相同,檔案會互相覆蓋:

解決辦法:修改其中一個檔名即可。
原因:推測有可能是 Blueprint 壓平化時 HTML 也會變在同層。

總結

以上 8 個步驟,就能完成加入 Flask Blueprint 藍圖囉!


為你推薦:

分享這篇文章

發佈留言