Python Flask Web 第六課 —— 靜態檔案
阿新 • • 發佈:2019-02-13
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 %}