FlaskWebDevelopment - Flask模板4 - url_for()在模板中產生連結

來源:互聯網
上載者:User

標籤: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()在模板中產生連結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.