溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

flask模板指的是什么

發(fā)布時間:2020-09-08 14:06:37 來源:億速云 閱讀:126 作者:小新 欄目:編程語言

這篇文章主要介紹flask模板指的是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

所謂模板就是就是模具,模型;我們現(xiàn)實生活中經(jīng)常碰到這種東西,就比如說廠家要批量生產一種鋼化杯子,那么廠家肯定是先建模,設計出一個杯子的模型,并在此基礎上做出模具,之后的生產,只需要將冶煉好的金屬注入其中即可。我們學習的模板就類似于這種模具,只不過我們這里的是 web 模板。模板的誕生是為了將顯示與數(shù)據(jù)分離,讓前端工作人員專注表現(xiàn)設計,后臺人員注重業(yè)務邏輯,同時簡化代碼的復雜程度。模板技術多種多樣,但其本質是將模板文件和數(shù)據(jù)通過模板引擎生成最終的HTML代碼。

渲染模板

所謂渲染模板,其實就是將數(shù)據(jù)插入到你的模板中,例如:

這是一個 user.html的文件

<h2>Hello, {{ name }}!</h2>

這是一個視圖函數(shù)

from flask import Flask,render_template

@app.route('/user/<name>')
def user(name):
    return render_template('user.html',name=name)

flask 提供的 render_template 函數(shù)將 Jinja2 模板引擎集成到了程序中。render_template 函數(shù)第一個參數(shù)是模板的文件名。隨后的參數(shù)都是鍵值對,表示模板中變量對應的真實值,注意一下,這個 render_template 查詢響應文件是有位置的,默認的是在當前腳本的同級目錄的templates目錄下,如果不是這個目錄下的文件是查詢不到的,需另行修改。(如圖所示,我的視圖函數(shù)在 manage 中,而我的響應文件則保存在 templates 中) 

拿上面這個例子來舉例,首先在 user.html 文件中有一個變量name,user這個函數(shù)的形參中也有一個變量 name 在響應的時候會將 user.html 中的name替換為user函數(shù)所接收到的參數(shù),打個比方,如果訪問的是’/user/tom’,那么這個時候,user.html 的顯示效果就是 Hello,tom!

變量

上面的例子提到了變量,在模板中使用 {{ name }} 結構表示一個變量,它是一種特殊的占位符,告訴模板引擎這個地方要被替換為渲染時傳遞過來的數(shù)據(jù)。Jinja2 能識別所有類型的變量,例如列表,字典,對象等,例子見下:

<p>A value from a dirctionary: {{ mydict['key'] }}.</p>
<p>A value from a list: {{ mylist[2] }}.</p>
<p>A value from a list,with a variable index: {{ mylist[myintvar] }}.</p>
<p>A value from an object's method: {{ myobj.somemethod() }}.</p>

還可以使用過濾器修改變量,過濾器名添加在變量名之后,與變量名之間用豎線分隔。如下,為模板以首字母大寫形式顯示變量 name 的值.

hello, {{ name|capitalize }}

Jinja2的常用過濾器

flask模板指的是什么

safe 過濾器需要注意一下,默認情況下,出于安全考慮,Jinja2 會轉義所有的變量。如果需要顯示變量中存儲的源碼時,就可以考慮使用 safe 過濾器了。但需要切記的是,千萬不可在不可信的值上使用 safe 過濾器,例如用戶在表單輸入的文本等。

控制結構

Jinja2提供了多種控制結構,可用來改變模板的渲染流程。語法:{% 語句 %} 具體例子見下: 

條件控制語句:

{% if user %}
    Hello ,{{ user }}!{% else %}
    Hello ,Stranger!{% endif %}

循環(huán)控制:

<ul>
    {% for comment iin comments %}
        <li>{{ comment }}</li>
    {% endfor %}</ul>

以上是flask模板指的是什么的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI