成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[譯]Flask教程-模版

jifei / 1792人閱讀

摘要:我們可以讓綁定到某個(gè)的函數(shù)返回比如下面的代碼中函數(shù)會(huì)返回由包裹的字符串但大家看得出這樣直接通過代碼返回內(nèi)容顯得很笨尤其當(dāng)我們碰到需要對(duì)輸入變量做條件判斷和循環(huán)時(shí)我們經(jīng)常需要做字符串嵌入拼接這種體力活這種情況下我們需要利用自帶的模版引擎我們可

我們可以讓綁定到某個(gè)URL的函數(shù)返回HTML. 比如下面的代碼中, hello()函數(shù)會(huì)返回由

包裹的Hello World字符串.

from flask import Flask
app = Flask(__name__)

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

Hello World"

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

但大家看得出, 這樣直接通過python代碼返回HTML內(nèi)容顯得很笨, 尤其當(dāng)我們碰到需要對(duì)輸入變量做條件判斷和循環(huán)時(shí), 我們經(jīng)常需要做字符串嵌入拼接這種體力活.
這種情況下, 我們需要利用Flask自帶的Jinja2模版引擎. 我們可以通過render_template()來渲染HTML文件, 而不是直接把HTML直接硬編碼在python代碼中. 比如:

from flask import Flask
app = Flask(__name__)

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

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

Flask會(huì)默認(rèn)嘗試從腳本執(zhí)行目錄下的templates文件夾中尋找HTML模版文件,

--腳本目錄
 |_ Hello.py
 |_ templates
    |_hello.html

"web模版系統(tǒng)" 是指一個(gè)變量部分可以被動(dòng)態(tài)替換的HTML代碼的系統(tǒng). web模版系統(tǒng)包含一個(gè)模版引擎, 一種數(shù)據(jù)源, 和一個(gè)模版處理工具.
Flask使用Jinja2模版引擎, web模版包含有按HTML語(yǔ)法書寫的腳本和由變量或表達(dá)式構(gòu)成的動(dòng)態(tài)內(nèi)容的占位符. 這些占位符會(huì)在模版渲染時(shí)被替換成需要展示的動(dòng)態(tài)內(nèi)容.
我們可以把如下內(nèi)容保存為hello.html:



   
      

Hello {{ name }}!

然后運(yùn)行下面的Python代碼:

from flask import Flask, render_template
app = Flask(__name__)

@app.route("/hello/")
def hello_name(user):
   return render_template("hello.html", name = user)

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

服務(wù)器在開發(fā)模式下開始運(yùn)行之后, 我們打開瀏覽器在地址欄輸入 http://localhost:5000/hello/mvl.
我們可以看到在模版的{{ name }} 部分, 替換成了變量mvl.
Jinja2使用如下的占位符語(yǔ)法:

{% ... %} 聲明

{{ ... }} 用于表達(dá)式直接把結(jié)果輸出

{# ... #} 用于注釋, 將不會(huì)在模版引擎渲染結(jié)果中輸出

# ... ## 行注釋

下面的例子展示了模版中條件語(yǔ)句的使用.
hello_name()方法接收一個(gè)整型參數(shù), 傳遞給hello.html模版, 其中, masks變量接受到了這個(gè)整型變量, 并進(jìn)行判斷比較, 是否大于50, 然后進(jìn)行不同的渲染.

Python程序如下:

from flask import Flask, render_template
app = Flask(__name__)

@app.route("/hello/")
def hello_name(score):
   return render_template("hello.html", marks = score)

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

模版hello.html如下:



   
   
      {% if marks>50 %}
      

Your result is pass!

{% else %}

Your result is fail

{% endif %}

注意, if-else和endif語(yǔ)句被包裹在{%..%}之中.
啟動(dòng)腳本并分別在瀏覽器輸入http://localhost/hello/60http://localhost/hello/30, 觀察模版不同的渲染結(jié)果.

Python中的循環(huán)語(yǔ)法也可以在模版中實(shí)現(xiàn). 下面的程序中, 當(dāng)請(qǐng)求 http://localhost:5000/result 時(shí), result()方法就向模版result.html發(fā)送了一個(gè)字典對(duì)象用于渲染. 然后result.html使用for循環(huán)把字典result的鍵值對(duì)渲染到html表格中.

Python程序如下:

from flask import Flask, render_template
app = Flask(__name__)

@app.route("/result")
def result():
   dict = {"phy":50,"che":60,"maths":70}
   return render_template("result.html", result = dict)

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

把下面result.html模版文件保存到默認(rèn)templates模版文件夾中.



   
   
      
         {% for key, value in result.iteritems() %}
         
            
            
         {% endfor %}
      
{{ key }} {{ value }}

這里, for循環(huán)聲明語(yǔ)句被用{%..%}包裹了起來, 鍵值對(duì)取值的部分被用{{ }}包裹.
程序開始執(zhí)行后, 我們可以打開瀏覽器, 看看 http://localhost:5000/result的輸出.

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/40886.html

相關(guān)文章

  • []Flask教程--重定向與錯(cuò)誤

    摘要:類有一個(gè)方法當(dāng)我們調(diào)用它時(shí)它會(huì)返回一個(gè)響應(yīng)對(duì)象并且按指定的狀態(tài)碼將用戶重定向到另一個(gè)位置方法的原型如下在上面的函數(shù)中我們要重定向的位置狀態(tài)碼會(huì)在頭中發(fā)送給瀏覽器默認(rèn)為用這個(gè)參數(shù)來初始化響應(yīng)對(duì)象下面是一些標(biāo)準(zhǔn)的狀態(tài)碼重定向的狀態(tài)碼默認(rèn)是也就是 Flask類有一個(gè)redirect()方法. 當(dāng)我們調(diào)用它時(shí), 它會(huì)返回一個(gè)響應(yīng)對(duì)象并且按指定的狀態(tài)碼將用戶重定向到另一個(gè)位置. redirect...

    leap_frog 評(píng)論0 收藏0
  • []Flask教程--靜態(tài)文件

    摘要:一個(gè)應(yīng)用經(jīng)常需要或之類的靜態(tài)文件來幫助網(wǎng)頁(yè)更好的展示內(nèi)容通常服務(wù)器被用來提供這種靜態(tài)文件服務(wù)但在程序的開發(fā)階段這些文件需要被放置在應(yīng)用根目錄下的文件夾中啟動(dòng)后使用時(shí)前綴以開頭在下面的例子中文件中定義了一個(gè)函數(shù)這個(gè)函數(shù)在中可以被一個(gè)按鈕的事件 一個(gè)web應(yīng)用經(jīng)常需要javascript或css之類的靜態(tài)文件來幫助網(wǎng)頁(yè)更好的展示內(nèi)容. 通常, web服務(wù)器被用來提供這種靜態(tài)文件服務(wù), 但在...

    sf190404 評(píng)論0 收藏0
  • []Flask教程--將表單數(shù)據(jù)發(fā)送到模板

    摘要:之前我們已經(jīng)看到在中我們可以給規(guī)則指定方法對(duì)應(yīng)的函數(shù)可以按字典形式接收表單數(shù)據(jù)然后將這些數(shù)據(jù)輸送到模板中并最終渲染為網(wǎng)頁(yè)在下面的例子中渲染一個(gè)含有表單的網(wǎng)頁(yè)填入到表單的數(shù)據(jù)被到然后觸發(fā)了函數(shù)函數(shù)將表單數(shù)據(jù)組裝起來放入字典對(duì)象中然后發(fā)送到模板 之前我們已經(jīng)看到在Flask中我們可以給URL規(guī)則指定http方法, 對(duì)應(yīng)的函數(shù)可以按字典形式接收表單數(shù)據(jù), 然后將這些數(shù)據(jù)輸送到模板中并最終渲染...

    you_De 評(píng)論0 收藏0
  • []Flask教程-HTTP方法

    摘要:協(xié)議是萬(wàn)維網(wǎng)數(shù)據(jù)通信的基礎(chǔ)在這個(gè)協(xié)議上可以對(duì)同一使用不同的方法獲取數(shù)據(jù)下面展示了幾種不同的方法將未經(jīng)加密的信息發(fā)送的服務(wù)器是最通用的方法該方法除了服務(wù)端不返回響應(yīng)內(nèi)容只返回頭信息之外同是一樣的用于向服務(wù)器發(fā)送表單數(shù)據(jù)請(qǐng)求不會(huì)被緩存將所指示的 HTTP協(xié)議是萬(wàn)維網(wǎng)數(shù)據(jù)通信的基礎(chǔ). 在這個(gè)協(xié)議上可以對(duì)同一URL使用不同的方法獲取數(shù)據(jù).下面展示了幾種不同的HTTP方法. GET 將未經(jīng)加...

    anonymoussf 評(píng)論0 收藏0
  • []如何使用Flask開發(fā)一個(gè)增刪改查的應(yīng)用

    摘要:教程譯文首發(fā)自我的博客我們將創(chuàng)建一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)驅(qū)動(dòng)的筆記本應(yīng)用。本教程面向想學(xué)習(xí)如何使用開發(fā)網(wǎng)站或者應(yīng)用的初學(xué)者。在剛創(chuàng)建的文件中,創(chuàng)建一個(gè)名為的文件。現(xiàn)在,我們將創(chuàng)建一個(gè)函數(shù),并且使用裝飾器將它綁定到一個(gè)上。 showImg(https://segmentfault.com/img/remote/1460000006765797); 教程譯文首發(fā)自我的博客:Defshines Bl...

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

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

0條評(píng)論

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