W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
用 Python 生成 HTML 十分無(wú)趣,而且相當(dāng)繁瑣,因?yàn)槟惚仨毷謩?dòng)對(duì) HTML 做轉(zhuǎn) 義來(lái)保證應(yīng)用的安全。為此,F(xiàn)lask 配備了 Jinja2 模板引擎。
你可以使用 render_template() 方法來(lái)渲染模板。你需要做的一 切就是將模板名和你想作為關(guān)鍵字的參數(shù)傳入模板的變量。這里有一個(gè)展示如何 渲染模板的簡(jiǎn)例:
from flask import render_template
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
return render_template('hello.html', name=name)
Flask 會(huì)在 templates 文件夾里尋找模板。所以,如果你的應(yīng)用是個(gè)模塊,這 個(gè)文件夾應(yīng)該與模塊同級(jí);如果它是一個(gè)包,那么這個(gè)文件夾作為包的子目錄:
情況 1: 模塊:
/application.py
/templates
/hello.html
情況 2: 包:
/application
/__init__.py
/templates
/hello.html
關(guān)于模板,你可以發(fā)揮 Jinja2 模板的全部實(shí)例。更多信息請(qǐng)見(jiàn) Jinja2 模板文檔 。
這里有一個(gè)模板實(shí)例:
<!doctype html>
<title>Hello from Flask</title>
{% if name %}
<h1>Hello {{ name }}!</h1>
{% else %}
<h1>Hello World!</h1>
{% endif %}
在模板里,你也可以訪問(wèn) request 、 session 和 g [1] 對(duì)象, 以及 get_flashed_messages() 函數(shù)。
模板繼承讓模板用起來(lái)相當(dāng)順手。如欲了解繼承的工作機(jī)理,請(qǐng)?zhí)D(zhuǎn)到 模板繼承 模式的文檔。最起碼,模板繼承能使特定元素 (比如頁(yè)眉、導(dǎo)航欄和頁(yè)腳)可以出現(xiàn)在所有的頁(yè)面。
自動(dòng)轉(zhuǎn)義功能默認(rèn)是開(kāi)啟的,所以如果 name 包含 HTML ,它將會(huì)被自動(dòng)轉(zhuǎn) 義。如果你能信任一個(gè)變量,并且你知道它是安全的(例如一個(gè)模塊把 Wiki 標(biāo) 記轉(zhuǎn)換為 HTML),你可以用 Markup 類或 |safe 過(guò)濾 器在模板中把它標(biāo)記為安全的。在 Jinja 2 文檔中,你會(huì)看到更多的例子。
這里是一個(gè) Markup 類如何使用的簡(jiǎn)單介紹:
>>> from flask import Markup
>>> Markup('<strong>Hello %s!</strong>') % '<blink>hacker</blink>'
Markup(u'<strong>Hello <blink>hacker</blink>!</strong>')
>>> Markup.escape('<blink>hacker</blink>')
Markup(u'<blink>hacker</blink>')
>>> Markup('<em>Marked up</em> » HTML').striptags()
u'Marked up \xbb HTML'
在 0.5 版更改: 自動(dòng)轉(zhuǎn)義不再在所有模板中啟用。下列擴(kuò)展名的模板會(huì)觸發(fā)自動(dòng)轉(zhuǎn)義: .html 、 .htm 、.xml 、 .xhtml 。從字符串加載 的模板會(huì)禁用自動(dòng)轉(zhuǎn)義。
不確定 g 對(duì)象是什么?它允許你按需存儲(chǔ)信息, 查看( g )對(duì)象的文檔和 在 Flask 中使用 SQLite 3 的文 檔以獲取更多信息。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: