tornado模板使用

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è)地址拆座。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市冠息,隨后出現(xiàn)的幾起案子挪凑,更是在濱河造成了極大的恐慌,老刑警劉巖逛艰,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件躏碳,死亡現(xiàn)場離奇詭異,居然都是意外死亡瓮孙,警方通過查閱死者的電腦和手機(jī)唐断,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杭抠,“玉大人脸甘,你說我怎么就攤上這事∑樱” “怎么了丹诀?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長翁垂。 經(jīng)常有香客問我铆遭,道長,這世上最難降的妖魔是什么沿猜? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任枚荣,我火速辦了婚禮,結(jié)果婚禮上啼肩,老公的妹妹穿的比我還像新娘橄妆。我一直安慰自己,他們只是感情好祈坠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布害碾。 她就那樣靜靜地躺著,像睡著了一般赦拘。 火紅的嫁衣襯著肌膚如雪慌随。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音阁猜,去河邊找鬼丸逸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蹦漠,可吹牛的內(nèi)容都是我干的椭员。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼笛园,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼隘击!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起研铆,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤埋同,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后棵红,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凶赁,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年逆甜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了虱肄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡交煞,死狀恐怖咏窿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情素征,我是刑警寧澤集嵌,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站御毅,受9級(jí)特大地震影響根欧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜端蛆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一凤粗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧今豆,春花似錦嫌拣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瘦馍。三九已至歼秽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間情组,已是汗流浹背燥筷。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來泰國打工箩祥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肆氓。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓袍祖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谢揪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蕉陋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 譯者說 Tornado 4.3于2015年11月6日發(fā)布,該版本正式支持Python3.5的async/await...
    TaoBeier閱讀 3,031評(píng)論 0 10
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理拨扶,服務(wù)發(fā)現(xiàn)凳鬓,斷路器,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • Tornado提供了一個(gè)簡單患民,快速缩举,靈活的模板引擎。 1匹颤,指定模板路徑 首先仅孩,我們向Application對(duì)象的i...
    玩阿軻睡妲己閱讀 394評(píng)論 0 0
  • tornado框架是一款相較于其他web framework處理服務(wù)器性能問題更加強(qiáng)健的輕量級(jí)的強(qiáng)大的Pytho...
    惡人未滿閱讀 7,116評(píng)論 3 10
  • 道聽途說 掏窟窿 解放前人窮,盜賊便多印蓖。盜賊有兩種辽慕,一種是端門或是把窗戶紙捅破,拿鉤子往外鉤東西另伍。另外一...
    老爸的雜拌兒糖閱讀 635評(píng)論 8 39