国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

3.render_template渲染模板及jinja2

lemon / 3572人閱讀

摘要:用瀏覽器訪問(wèn)這個(gè)地址,顯示結(jié)果如下那么為何稱之為模板呢因?yàn)椴粌H能渲染靜態(tài)的文件,也能傳遞參數(shù)給,使一個(gè)模板根據(jù)參數(shù)的不同顯示不同的內(nèi)容,這是因?yàn)槭褂昧诉@個(gè)模板引擎。

我們之前的視圖函數(shù),返回的都是簡(jiǎn)單的"Hello Wolrd"之類的字符串,怎么返回一個(gè)html呢?首先我們?cè)趖emplates文件夾建立一個(gè)html文件,內(nèi)容隨便寫一點(diǎn)如下:




    
    Index


This is index page

我們可以使用Flask對(duì)象appsend_static_file方法,使視圖函數(shù)返回一個(gè)靜態(tài)的html文件,但現(xiàn)在我們不使用這種方法,而是使用flaskrender_template函數(shù),它功能更強(qiáng)大。
flask中導(dǎo)入render_template,整體代碼如下:

from flask import Flask, render_template
import config

app = Flask(__name__)
app.config.from_object(config)


@app.route("/")
def index():
    return render_template("index.html")

if __name__ == "__main__":
    app.run()

render_template函數(shù)會(huì)自動(dòng)在templates文件夾中找到對(duì)應(yīng)的html,因此我們不用寫完整的html文件路徑。用瀏覽器訪問(wèn)"/"這個(gè)地址,顯示結(jié)果如下:

那么為何稱之為模板呢?因?yàn)?b>render_template不僅能渲染靜態(tài)的html文件,也能傳遞參數(shù)給html,使一個(gè)html模板根據(jù)參數(shù)的不同顯示不同的內(nèi)容,這是因?yàn)閒lask使用了jinja2這個(gè)模板引擎。要使用模板,在render_template參數(shù)中以key=value形式傳入變量,在html中使用{{key}}來(lái)顯示傳入的變量,例如:

# 視圖函數(shù)
@app.route("/")
def index():
    return render_template("index.html", contents="This is index page")

# html



    
    Index


{{ contents }}

瀏覽器顯示的結(jié)果與上文是一樣的。我們還可以直接把一個(gè)類的實(shí)例傳遞過(guò)去,并在模板中訪問(wèn)類的屬性,例如假設(shè)一個(gè)類對(duì)象objab屬性,關(guān)鍵部分的代碼如下:

# 視圖函數(shù)中
return render_template("index.html", object=obj)

...
# html中

a: {{ object.a }}

b: {{ object.b }}

傳入一個(gè)字典也可以,并且在模板中既可以用dict[key],也可以用dict.key


使用過(guò)濾器,可以在html中對(duì)傳入的變量進(jìn)行處理,其格式是{{ 變量 | 過(guò)濾器 }},例如將前文的{{ contents }}修改為{{ contents | upper}},瀏覽器顯示的內(nèi)容就變成了:

所以我們可以很容易就理解,過(guò)濾器其實(shí)就是以變量為參數(shù)的函數(shù),返回處理后的結(jié)果,在后端一樣可以先用字符串對(duì)象的upper()函數(shù)處理好再傳遞給模板,效果是完全一樣的。jinja2自帶了一些過(guò)濾器,例如length/reverse/lower等等 ,并且我們也可以自己按照需求自定義過(guò)濾器,模板還支持{{ 變量 | 過(guò)濾器1 | 過(guò)濾器2 | ... }}這樣的操作。想要深入了解的話,可以搜索jinja2過(guò)濾器去進(jìn)一步學(xué)習(xí)。


模板中還可以使用if elsefor in控制語(yǔ)句,與變量使用{{ }}不同,控制語(yǔ)句要放在{% %}里,例如前文的contents傳入一個(gè)list:

contents=[i for i in range(10)]

html中代碼如下:

{% for i in contents %} {{ i }}{# 注意i也要用兩個(gè)大括號(hào) #} {% endfor %}

使用for遍歷contents的內(nèi)容,并用{{ i }}顯示出來(lái),同時(shí)還用{# #}加了一個(gè)注釋,還要注意需要使用{% endfor %}來(lái)提示循環(huán)區(qū)域的結(jié)束,因?yàn)閔tml不像python那樣通過(guò)縮進(jìn)來(lái)判斷循環(huán)的區(qū)域,if也是同理。瀏覽器顯示結(jié)果:

最后forif結(jié)合使用:

header

{% for i in contents %}

{% if i%2 == 0 %} {{ i }}是偶數(shù){# 注意i也要用兩個(gè)大括號(hào) #} {% else %} {{ i }}是奇數(shù) {% endif %}

{% endfor %}

結(jié)果如下(只是演示一下,不要吐槽排版和美觀):

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/41243.html

相關(guān)文章

  • django中的配置文件

    摘要:默認(rèn)的,及使用它的號(hào)數(shù)據(jù)庫(kù)此處使用號(hào)數(shù)據(jù)庫(kù),在客戶端查看記得切換數(shù)據(jù)庫(kù)存儲(chǔ)在本機(jī)內(nèi)存中,比數(shù)據(jù)庫(kù)的方式讀寫快很多默認(rèn)的配置項(xiàng),采用號(hào)庫(kù)。狀態(tài)保持的配置項(xiàng),采用號(hào)庫(kù)。使用名為的配置項(xiàng)存儲(chǔ)數(shù)據(jù)。配置完成后運(yùn)行程序,測(cè)試結(jié)果。 1.配置開(kāi)發(fā)環(huán)境當(dāng)進(jìn)入虛擬環(huán)境,通過(guò)django_admin創(chuàng)建一個(gè)項(xiàng)目后,會(huì)在項(xiàng)目同名目錄生成一個(gè)setting.py文件。而實(shí)際項(xiàng)目過(guò)程中會(huì)有不同的環(huán)境,如開(kāi)發(fā)環(huán)境、生...

    番茄西紅柿 評(píng)論0 收藏0
  • django中的配置文件

    摘要:默認(rèn)的,及使用它的號(hào)數(shù)據(jù)庫(kù)此處使用號(hào)數(shù)據(jù)庫(kù),在客戶端查看記得切換數(shù)據(jù)庫(kù)存儲(chǔ)在本機(jī)內(nèi)存中,比數(shù)據(jù)庫(kù)的方式讀寫快很多默認(rèn)的配置項(xiàng),采用號(hào)庫(kù)。狀態(tài)保持的配置項(xiàng),采用號(hào)庫(kù)。使用名為的配置項(xiàng)存儲(chǔ)數(shù)據(jù)。配置完成后運(yùn)行程序,測(cè)試結(jié)果。 1.配置開(kāi)發(fā)環(huán)境當(dāng)進(jìn)入虛擬環(huán)境,通過(guò)django_admin創(chuàng)建一個(gè)項(xiàng)目后,會(huì)在項(xiàng)目同名目錄生成一個(gè)setting.py文件。而實(shí)際項(xiàng)目過(guò)程中會(huì)有不同的環(huán)境,如開(kāi)發(fā)環(huán)境、生...

    williamwen1986 評(píng)論0 收藏0
  • Flask Web Development —— 模板(上)

    摘要:用真實(shí)的值替換變量并返回最終響應(yīng)字符串,這個(gè)過(guò)程稱為渲染。示例展示模板實(shí)現(xiàn)該響應(yīng)。控制結(jié)構(gòu)提供一些控制結(jié)構(gòu)用于改變模板流。這個(gè)示例展示如何使用循環(huán)做到這些同樣支持宏,這和代碼中的函數(shù)很像。 寫代碼最關(guān)鍵的是要易于維護(hù)且結(jié)構(gòu)清晰整潔。目前為止,你看到的例子都過(guò)于簡(jiǎn)單從而沒(méi)有做這方面的要求。Flask視圖函數(shù)希望將兩個(gè)應(yīng)該完全獨(dú)立的任務(wù)一并處理,兩個(gè)任務(wù)有兩種代碼,一并處理勢(shì)必會(huì)引發(fā)問(wèn)題。...

    fizz 評(píng)論0 收藏0
  • FlaskWeb開(kāi)發(fā)讀書筆記之jinja2模板

    摘要:注模板包含不存在此問(wèn)題。在模板中,使用過(guò)濾器顯式地標(biāo)記一個(gè)字符串為安全的臨時(shí)地完全禁用自動(dòng)轉(zhuǎn)義系統(tǒng)。通過(guò)在聲明中直接添加或,當(dāng)前的上下文可以傳遞到模板,而且不會(huì)自動(dòng)禁用緩存。 官網(wǎng):http://jinja.pocoo.org/docs/dev/中文文檔:http://docs.jinkan.org/docs/j...當(dāng)前版本2.8 安裝:pip install Jinja2Flask...

    tangr206 評(píng)論0 收藏0
  • Flask框架基礎(chǔ)(二)

    摘要:處理和函數(shù)之間關(guān)系的程序稱為路由。模板引擎是由實(shí)現(xiàn)的是內(nèi)置的模板語(yǔ)言參照設(shè)計(jì)思想設(shè)計(jì)的,跟差不多渲染模板默認(rèn)情況下,在程序文件夾中的子文件夾中尋找模板。如果需要可在文件夾中使用子文件夾存放文件。 1 程序的基本結(jié)構(gòu) 1.1初始化 所有Flask 程序都必須創(chuàng)建一個(gè)程序?qū)嵗eb 服務(wù)器使用一種名為Web 服務(wù)器網(wǎng)關(guān)接口(Web Server Gateway Interface,WSG...

    lpjustdoit 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<