靜態檔案 (static file) 指的是不同請求中訪問到的資料都相同的檔案,例如圖片、影片等。
- 不經過路由處理:靜態檔案不會經由 Flask 中設定的路由,而是由 WSGI middleware 直接處理,最終呈現在使用者瀏覽的畫面上,而非自己使用
@app.route()加上。 - 特殊的路由:檔名對應著網址路徑
靜態檔案路徑設定
通常來說我們會直接將該靜態檔案資料夾建立在根目錄(也就是與 app.py 同一層)之下。
1 | mkdir static |
建立成功後無需改動程式碼,因為 Flask 預設靜態檔案存放在 static 資料夾:
1 | class Flask(App): |
一般來說,static 資料夾下會使用以下的方式將檔案進行分類,否則全部放在資料夾中會搞混,整理起來也會很麻煩:
1 | static/ |
| 資料夾名稱 | 用途說明 |
|---|---|
css/ |
放置樣式表(例如 style.css) |
js/ |
放置 JavaScript 程式碼(例如 main.js) |
images/ |
放圖片檔案(例如 logo.png, banner.jpg) |
fonts/ |
放自訂字型檔案(例如 .ttf, .woff) |
docs/ |
可選,用來放一些靜態文件(例如 terms.pdf) |
test/ |
可選,用來測試路徑用的小檔案,如 test.txt |
建立資料夾後,只需將檔案放入資料夾中,以 /static/檔名 訪問即可。必須注意到:檔名必須包含副檔名。舉例來說,在 static 資料夾中放入 Flask 的 Logo,訪問 /static/flask.svg 即可看到如下畫面:
圖 1:靜態檔案範例-Flask Logo
或是放入 test.txt,裡面寫入文字,訪問 /static/test.txt 也會顯示結果:
圖 2:靜態檔案範例-test 純文字檔
自定義資料夾與路徑
若不想使用 Flask 預設的靜態檔案路徑,可以使用 static_url_path 設定路徑。方法如下:
1 | app = Flask( |
例如可以設定 static_url_path 為 my_static,嘗試訪問就變成 /my_static/檔名。
圖 3:自定義路徑