Python之web模板應(yīng)用
Python的web模板,其實就是在HTML文檔中使用控制語句和表達語句替換HTML文檔中的變量來控制HTML的顯示格式,Python的web模板可以更加靈活和方便的控制HTML的顯示,而且大大地減少了編程人員的工作量。
模板語法:
1、控制語句{% ... %}:控制語句需要用{% end %}來作為此語句結(jié)束標(biāo)志,通常用來作循環(huán)控制、條件控制、模塊控制等,可以更加方便的控制HTML內(nèi)容的顯示;
2、表達語句{{ ... }}:一條表達語句就相當(dāng)于一條Python語句,不需要結(jié)束語句,{{和}}之間可以放入任何Python表達式,Python模板語法可以自動運行{{和}}中的語句并把運行結(jié)果顯示在HTML模板中;
3、母板繼承:在母板中使用{% block block_name %}{% end %}進行模塊的占位,block_name可以自己定義,其他的都是固定的語法格式;在子模板中使用{% extends "xxx.html" %}表示此HTML模板繼承自“xxx.html”模板(母板),然后在子模板中使用{% block block_name %} ... {% end %}重新定義母板中占位的模塊,子模板中定義模塊內(nèi)容就會顯示在母板中占位的位置,不同的子模板中可以定義不同的模塊內(nèi)容來滿足自身的需要;
4、模板導(dǎo)入:在一個HTML模板中使用{% include "xxx.html" %},就會將xxx.html的內(nèi)容導(dǎo)入(嵌入)當(dāng)前HTML模板中,一般會將一些公共內(nèi)容寫在一個模板中,然后導(dǎo)入到需要使用的模板中,以達到代碼重用的效果,使模板編碼更加簡潔方便;
5、模板函數(shù):
1)static_url("static_file_path"):導(dǎo)入靜態(tài)文件,參數(shù)為靜態(tài)文件的路徑全名,例如<link href="{{ static_url(" rel="external nofollow" xxx.css") }}" rel="stylesheet" />,如果設(shè)置了靜態(tài)文件路徑(比如tornado.web.Application中參數(shù)settings的選項static_path),則該參數(shù)為設(shè)置的靜態(tài)文件路徑下的相對路徑;
2)escape(string):將string中的$、<和>轉(zhuǎn)換成對應(yīng)的HTML字符串;
3)更新中...
下面是用tornado寫的一個非常簡單的web模板應(yīng)用:
#!/usr/bin/env python # -*- coding: utf-8 -*- import tornado.web import tornado.ioloop from tornado.options import define, options define('port', default=8888, help='run on give the give port', type=int) # 用于處理網(wǎng)頁的請求 class MainHandler(tornado.web.RequestHandler): def get(self, *args, **kwargs): personinfodict = { 'name': 'Jason', 'age': 20, 'gender': 'male', } itemlist = ['name', 'age', 'gender'] # 將變量以參數(shù)的形式傳入HTML模板中 self.render('personinfo.html', itemlist=itemlist, personinfodict=personinfodict, welcome='hello guy!') # 設(shè)置不同路由的網(wǎng)頁對應(yīng)的處理類 app = tornado.web.Application([ (r'/', MainHandler) ]) # 開始主程序I/O循環(huán) if __name__ == '__main__': app.listen(options.port) tornado.ioloop.IOLoop.instance().start()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <!-- 使用表達語句輸出變量的值 --> <title>{{ welcome }}</title> </head> <body> <ul><!-- 使用控制語句控制HTML內(nèi)容的輸出,也減少了許多工作量 --> {% for item in itemlist %} <li>{{ item }}: {{ personinfodict[item] }}</li> {% end %} </ul> </body> </html>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python Pygame實戰(zhàn)之賽車游戲的實現(xiàn)
如今的游戲可謂是層出不窮,不過小編發(fā)現(xiàn),賽車游戲也是深受大家歡迎啊,像跑跑卡丁車、QQ飛車,還有主機游戲極品飛車系列。本文將用Python中的Pygame模塊制作一個簡單的賽車游戲,感興趣的可以了解一下2022-03-03Python ''takes exactly 1 argument (2 given)'' Python error
這篇文章主要介紹了Python 'takes exactly 1 argument (2 given)' Python error的相關(guān)資料,需要的朋友可以參考下2016-12-12使用beaker讓Facebook的Bottle框架支持session功能
這篇文章主要介紹了使用beaker讓Facebook的Bottle框架支持session功能,session在Python的Django等框架中內(nèi)置但在Bottle中并沒有被集成,需要的朋友可以參考下2015-04-04