1. 程式人生 > >Python Flask Web 第六課 —— 靜態檔案

Python Flask Web 第六課 —— 靜態檔案

1. 靜態檔案與 web 程式的組成

Web 程式不是僅由

  • Python 程式碼
  • 模板組成,
  • 靜態檔案
    • HTML 程式碼中引用的圖片、
    • JavaScript 原始碼檔案、
    • CSS;
>>> app = Flask(__name__)
>>> app.url_map
Map([<Rule '/static/<filename>' (GET, OPTIONS, HEAD) -> static>])

當我們檢視 URL 對映時,其中預設就有一個 static 路由,

當然,當我們使用 bootstrap 時:

>> from flask_bootstrap import
Bootstrap >> bootstrap = Bootstrap(app) >> app.url_map Map([<Rule '/static/bootstrap/<filename>' (GET, OPTIONS, HEAD) -> bootstrap.static>, <Rule '/static/<filename>' (GET, OPTIONS, HEAD) -> static>])

當我們在認為新增新的路由時:

@app.route('/')
def index():
    return '<h1>hello world!</h1>'
>> app.url_map Map([<Rule '/' (GET, OPTIONS, HEAD) -> index>, <Rule '/static/bootstrap/<filename>' (GET, OPTIONS, HEAD) -> bootstrap.static>, <Rule '/static/<filename>' (GET, OPTIONS, HEAD) -> static>])

對靜態檔案的引用被當做一個特殊的路由,/static/<filename>。例如,呼叫:

url_for
('static', filename='css/styles.css', _external=True)

得到的結果是

http://localhost:5000/static/css/styles.css

預設設定下,Flask 在程式根目錄中名為 static 的子目錄中尋找靜態檔案。如果需要,可在static 資料夾存放檔案。伺服器收到前面的 URL 後,會生成一個響應,包含檔案系統中 static/css/styles.css檔案的內容。

2. 一個示例

如何在程式的基模板(template/base.html)中放置 favicon.ico 圖示,該圖示會顯示在瀏覽器的位址列中,

{% block head %}
{{ super() }}
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico')}}" type="image/x-icon">
<link rel="icon" href="{{ url_for('static', filename='favicon.ico')}}" type="image/x-icon">
{% endblock %}