標籤:style http os java for strong sp 檔案 on
這裡講用url_for()來簡化在模板中產生連結的操作。以產生靜態檔案連結為例。
url_for()
直接在模板裡寫URL,當頁面複雜了之後很麻煩,而且可能對代碼產生依賴,代碼改動後連結就失效了。
URL可以通過Flask提供的url_for()來動態產生。這個函數以視圖函數名或者註冊視圖函數時的端點名作為參數,返回相應的URL。
比如在目前的代碼中:
url_for(‘index‘)返回\,
url_for(‘index‘, _external=True)返回http://localhost:5000/。
一個是相對的連結,應用內部跳轉足夠了,另一個是絕對的連結。
url_for()還支援傳入視圖函數的參數,url_for(‘user‘, name=‘john‘, _external=True)返回的就是http://localhost:5000/user/john。如果傳入的參數不是視圖函數的參數,那麼這個參數會被作為一個查詢字串放在連結後,url_for(‘index‘, page=2)返回的是/?page=2。
用url_for()產生靜態檔案連結
web應用不僅僅涉及Python和模板,還需要一些靜態檔案,像圖片,JavaScript檔案,CSS等等。
Flask裡對靜態檔案的引用被視為特殊的路由:/static/<filename>,調用url_for(‘static‘, filename=‘css/styles.css‘, _external=True)得到的URL是:http://localhost:5000/static/css/styles.css。
預設情況下Flask在應用根目錄下的static檔案夾裡尋找靜態檔案。可以在這個檔案夾裡組織好各靜態檔案的存放路徑,可以在裡面新增檔案夾。
下面在基礎模板新增內容,展示如何引入一個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 %}
在templates/base.html裡增加這段,卸載head 塊的最後,用super()來保留父模板的內容。
註:
- 代碼到3d tag了
- 下個是Flask-Moment外掛程式的部分,這個外掛程式做的操作主要是對時間進行格式化,包括自動對client端跨時區情況下的調整,同時提供了一些對時間的計算包括過去了多久之類的函數,實際上是對moment.js在Flask下的封裝,暫時感覺沒啥意義,決定跳過。這個算坑3。
FlaskWebDevelopment - Flask模板4 - url_for()在模板中產生連結