Python之web模板應(yīng)用
Python的web模板,其實(shí)就是在HTML文檔中使用控制語(yǔ)句和表達(dá)語(yǔ)句替換HTML文檔中的變量來(lái)控制HTML的顯示格式,Python的web模板可以更加靈活和方便的控制HTML的顯示,而且大大地減少了編程人員的工作量。
模板語(yǔ)法:
1、控制語(yǔ)句{% ... %}:控制語(yǔ)句需要用{% end %}來(lái)作為此語(yǔ)句結(jié)束標(biāo)志,通常用來(lái)作循環(huán)控制、條件控制、模塊控制等,可以更加方便的控制HTML內(nèi)容的顯示;
2、表達(dá)語(yǔ)句{{ ... }}:一條表達(dá)語(yǔ)句就相當(dāng)于一條Python語(yǔ)句,不需要結(jié)束語(yǔ)句,{{和}}之間可以放入任何Python表達(dá)式,Python模板語(yǔ)法可以自動(dòng)運(yùn)行{{和}}中的語(yǔ)句并把運(yùn)行結(jié)果顯示在HTML模板中;
3、母板繼承:在母板中使用{% block block_name %}{% end %}進(jìn)行模塊的占位,block_name可以自己定義,其他的都是固定的語(yǔ)法格式;在子模板中使用{% extends "xxx.html" %}表示此HTML模板繼承自“xxx.html”模板(母板),然后在子模板中使用{% block block_name %} ... {% end %}重新定義母板中占位的模塊,子模板中定義模塊內(nèi)容就會(huì)顯示在母板中占位的位置,不同的子模板中可以定義不同的模塊內(nèi)容來(lái)滿足自身的需要;
4、模板導(dǎo)入:在一個(gè)HTML模板中使用{% include "xxx.html" %},就會(huì)將xxx.html的內(nèi)容導(dǎo)入(嵌入)當(dāng)前HTML模板中,一般會(huì)將一些公共內(nèi)容寫在一個(gè)模板中,然后導(dǎo)入到需要使用的模板中,以達(dá)到代碼重用的效果,使模板編碼更加簡(jiǎn)潔方便;
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的選項(xiàng)static_path),則該參數(shù)為設(shè)置的靜態(tài)文件路徑下的相對(duì)路徑;
2)escape(string):將string中的$、<和>轉(zhuǎn)換成對(duì)應(yīng)的HTML字符串;
3)更新中...
下面是用tornado寫的一個(gè)非常簡(jiǎn)單的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)頁(yè)的請(qǐ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è)對(duì)應(yīng)的處理類 app = tornado.web.Application([ (r'/', MainHandler) ]) # 開(kāi)始主程序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"> <!-- 使用表達(dá)語(yǔ)句輸出變量的值 --> <title>{{ welcome }}</title> </head> <body> <ul><!-- 使用控制語(yǔ)句控制HTML內(nèi)容的輸出,也減少了許多工作量 --> {% for item in itemlist %} <li>{{ item }}: {{ personinfodict[item] }}</li> {% end %} </ul> </body> </html>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python Pygame實(shí)戰(zhàn)之賽車游戲的實(shí)現(xiàn)
如今的游戲可謂是層出不窮,不過(guò)小編發(fā)現(xiàn),賽車游戲也是深受大家歡迎啊,像跑跑卡丁車、QQ飛車,還有主機(jī)游戲極品飛車系列。本文將用Python中的Pygame模塊制作一個(gè)簡(jiǎn)單的賽車游戲,感興趣的可以了解一下2022-03-03numpy ndarray 取出滿足特定條件的某些行實(shí)例
今天小編就為大家分享一篇numpy ndarray 取出滿足特定條件的某些行實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12Python ''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中并沒(méi)有被集成,需要的朋友可以參考下2015-04-04python切片復(fù)制列表的知識(shí)點(diǎn)詳解
在本篇文章里小編給大家整理的是一篇關(guān)于python切片復(fù)制列表的知識(shí)點(diǎn)相關(guān)內(nèi)容,有興趣的朋友們可以跟著學(xué)習(xí)下。2021-10-10