1,指定模板路徑
app = tornado.web.Application(
handlers=[(r'/', IndexHandler), (r'/poem', PoemPageHandler)],
template_path=os.path.join(os.path.dirname(__file__), "templates")
)
首先肋殴,我們向Application對(duì)象的init方法傳遞了一個(gè)template_path參數(shù),template_path參數(shù)告訴Tornado在哪里尋找模板文件坦弟。
2护锤,編寫模板文件
index.html
存放在templates目錄下。
<!DOCTYPE html>
<html>
<head><title>模板</title></head>
<body>
<h1>Hello,Stranger!</h1>
</body>
</html>
demo2.html
<!DOCTYPE html>
<html>
<head><title>模板參數(shù)使用</title></head>
<body>
<h1>{{ name }}</h1>
<h1>{{ age }}</h1>
<h1>{{ sex }}</h1>
</body>
</html>
3酿傍,使用模板
self.render('index.html')
self.render('demo2.html',name='張三',age=100,sex='man')
4烙懦,模板語法
填充表達(dá)式
可以將任何Python表達(dá)式放在雙大括號(hào)中。Tornado將插入任何表達(dá)式計(jì)算結(jié)果值的字符串到輸出中赤炒。
<!DOCTYPE html>
<html>
<head><title>模板參數(shù)使用</title></head>
<body>
<h1>{{ 10+20 }}</h1>
<h1>{{ ‘hello’[2:] }}</h1>
<h1>{{ ','.join([str(x*x) for x in range(10)])}}</h1>
</body>
</html>
控制流語句
可以在Tornado模板中使用Python條件和循環(huán)語句氯析,支持if、for莺褒、while和try掩缓。
語法:
{% 條件 %}
內(nèi)容
{% end %}
{% for book in books %}
<li>{{ book }}</li>
{% end %}
{% if True %}
<h1>This True.</h1>
{% else %}
<h1>This False.</h1>
{% end %}
5,在模板中使用函數(shù)
Tornado在所有模板中默認(rèn)提供了一些便利的函數(shù)遵岩。
escape(s)
替換字符串s中的&你辣、<、>為他們對(duì)應(yīng)的HTML字符尘执。
url_escape(s)
使用urllib.quote_plus替換字符串s中的字符為URL編碼形式绢记。
json_encode(val)
將val編碼成JSON格式。(在系統(tǒng)底層正卧,這是一個(gè)對(duì)json庫的dumps函數(shù)的調(diào)用。查閱相關(guān)的文檔以獲得更多關(guān)于該函數(shù)接收和返回參數(shù)的信息跪解。)
squeeze(s)
過濾字符串s炉旷,把連續(xù)的多個(gè)空白字符替換成一個(gè)空格。
6叉讥,使用靜態(tài)文件
設(shè)置靜態(tài)路徑
向Application類的構(gòu)造函數(shù)傳遞一個(gè)名為static_path的參數(shù)來告訴Tornado從文件系統(tǒng)的一個(gè)特定位置提供靜態(tài)文件窘行。
app = tornado.web.Application(
handlers=[(r'/', IndexHandler), (r'/poem', MungedPageHandler)],
template_path=os.path.join(os.path.dirname(__file__), "templates"),
static_path=os.path.join(os.path.dirname(__file__), "static"),
debug=True
)
現(xiàn)在應(yīng)用將以讀取static目錄下讀取靜態(tài)文件。
使用靜態(tài)文件
Tornado模板模塊提供了一個(gè)叫作static_url
的函數(shù)來生成static目錄下文件的URL图仓。
例如使用static目錄下的style.css文件罐盔。
<link rel="stylesheet" href="{{ static_url("style.css") }}">
static_url函數(shù)會(huì)生成/static/style.css?v=ab12
,即:
<link rel="stylesheet" href="/static/style.css?v=ab12">
static_url
函數(shù)創(chuàng)建了一個(gè)基于文件內(nèi)容的hash值
救崔,并將其添加到URL末尾(查詢字符串的參數(shù)v
)惶看。這個(gè)hash值確保瀏覽器總是加載一個(gè)文件的最新版而不是之前的緩存版本捏顺。無論是在你應(yīng)用的開發(fā)階段,還是在部署到生產(chǎn)環(huán)境使用時(shí)纬黎,都非常有用幅骄,因?yàn)槟愕挠脩舨槐卦贋榱丝吹侥愕撵o態(tài)內(nèi)容而清除瀏覽器緩存了。
注意在使用static_url函數(shù)生成靜態(tài)文件路徑時(shí)必須用{{ }}括起來本今,因?yàn)閔ref屬性引用的是一個(gè)地址拆座。