摘要:我們可以讓綁定到某個的函數返回比如下面的代碼中函數會返回由包裹的字符串但大家看得出這樣直接通過代碼返回內容顯得很笨尤其當我們碰到需要對輸入變量做條件判斷和循環時我們經常需要做字符串嵌入拼接這種體力活這種情況下我們需要利用自帶的模版引擎我們可
我們可以讓綁定到某個URL的函數返回HTML. 比如下面的代碼中, hello()函數會返回由
</>復制代碼
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "Hello World"
"
if __name__ == "__main__":
app.run(debug = True)
但大家看得出, 這樣直接通過python代碼返回HTML內容顯得很笨, 尤其當我們碰到需要對輸入變量做條件判斷和循環時, 我們經常需要做字符串嵌入拼接這種體力活.
這種情況下, 我們需要利用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會默認嘗試從腳本執行目錄下的templates文件夾中尋找HTML模版文件,
</>復制代碼
--腳本目錄
|_ Hello.py
|_ templates
|_hello.html
"web模版系統" 是指一個變量部分可以被動態替換的HTML代碼的系統. web模版系統包含一個模版引擎, 一種數據源, 和一個模版處理工具.
Flask使用Jinja2模版引擎, web模版包含有按HTML語法書寫的腳本和由變量或表達式構成的動態內容的占位符. 這些占位符會在模版渲染時被替換成需要展示的動態內容.
我們可以把如下內容保存為hello.html:
</>復制代碼
Hello {{ name }}!
然后運行下面的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)
服務器在開發模式下開始運行之后, 我們打開瀏覽器在地址欄輸入 http://localhost:5000/hello/mvl.
我們可以看到在模版的{{ name }} 部分, 替換成了變量mvl.
Jinja2使用如下的占位符語法:
{% ... %} 聲明
{{ ... }} 用于表達式直接把結果輸出
{# ... #} 用于注釋, 將不會在模版引擎渲染結果中輸出
# ... ## 行注釋
下面的例子展示了模版中條件語句的使用.
hello_name()方法接收一個整型參數, 傳遞給hello.html模版, 其中, masks變量接受到了這個整型變量, 并進行判斷比較, 是否大于50, 然后進行不同的渲染.
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語句被包裹在{%..%}之中.
啟動腳本并分別在瀏覽器輸入http://localhost/hello/60 和 http://localhost/hello/30, 觀察模版不同的渲染結果.
Python中的循環語法也可以在模版中實現. 下面的程序中, 當請求 http://localhost:5000/result 時, result()方法就向模版result.html發送了一個字典對象用于渲染. 然后result.html使用for循環把字典result的鍵值對渲染到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模版文件保存到默認templates模版文件夾中.
</>復制代碼
{% for key, value in result.iteritems() %}
{% endfor %}
-
-
-
{{ key }} {{ value }}
這里, for循環聲明語句被用{%..%}包裹了起來, 鍵值對取值的部分被用{{ }}包裹.
程序開始執行后, 我們可以打開瀏覽器, 看看 http://localhost:5000/result的輸出.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40886.html
摘要:類有一個方法當我們調用它時它會返回一個響應對象并且按指定的狀態碼將用戶重定向到另一個位置方法的原型如下在上面的函數中我們要重定向的位置狀態碼會在頭中發送給瀏覽器默認為用這個參數來初始化響應對象下面是一些標準的狀態碼重定向的狀態碼默認是也就是 Flask類有一個redirect()方法. 當我們調用它時, 它會返回一個響應對象并且按指定的狀態碼將用戶重定向到另一個位置. redirect...
摘要:一個應用經常需要或之類的靜態文件來幫助網頁更好的展示內容通常服務器被用來提供這種靜態文件服務但在程序的開發階段這些文件需要被放置在應用根目錄下的文件夾中啟動后使用時前綴以開頭在下面的例子中文件中定義了一個函數這個函數在中可以被一個按鈕的事件 一個web應用經常需要javascript或css之類的靜態文件來幫助網頁更好的展示內容. 通常, web服務器被用來提供這種靜態文件服務, 但在...
摘要:之前我們已經看到在中我們可以給規則指定方法對應的函數可以按字典形式接收表單數據然后將這些數據輸送到模板中并最終渲染為網頁在下面的例子中渲染一個含有表單的網頁填入到表單的數據被到然后觸發了函數函數將表單數據組裝起來放入字典對象中然后發送到模板 之前我們已經看到在Flask中我們可以給URL規則指定http方法, 對應的函數可以按字典形式接收表單數據, 然后將這些數據輸送到模板中并最終渲染...
摘要:協議是萬維網數據通信的基礎在這個協議上可以對同一使用不同的方法獲取數據下面展示了幾種不同的方法將未經加密的信息發送的服務器是最通用的方法該方法除了服務端不返回響應內容只返回頭信息之外同是一樣的用于向服務器發送表單數據請求不會被緩存將所指示的 HTTP協議是萬維網數據通信的基礎. 在這個協議上可以對同一URL使用不同的方法獲取數據.下面展示了幾種不同的HTTP方法. GET 將未經加...
摘要:教程譯文首發自我的博客我們將創建一個簡單的數據庫驅動的筆記本應用。本教程面向想學習如何使用開發網站或者應用的初學者。在剛創建的文件中,創建一個名為的文件。現在,我們將創建一個函數,并且使用裝飾器將它綁定到一個上。 showImg(https://segmentfault.com/img/remote/1460000006765797); 教程譯文首發自我的博客:Defshines Bl...
閱讀 3203·2021-11-25 09:43
閱讀 3414·2021-11-11 16:54
閱讀 841·2021-11-02 14:42
閱讀 3757·2021-09-30 09:58
閱讀 3670·2021-09-29 09:44
閱讀 1285·2019-08-30 15:56
閱讀 2103·2019-08-30 15:54
閱讀 2991·2019-08-30 15:43