Python之web模板應(yīng)用
Python的web模板,其實(shí)就是在HTML文檔中使用控制語句和表達(dá)語句替換HTML文檔中的變量來控制HTML的顯示格式,Python的web模板可以更加靈活和方便的控制HTML的顯示,而且大大地減少了編程人員的工作量。
模板語法:
1、控制語句{% ... %}:控制語句需要用{% end %}來作為此語句結(jié)束標(biāo)志,通常用來作循環(huán)控制、條件控制、模塊控制等,可以更加方便的控制HTML內(nèi)容的顯示;
2、表達(dá)語句{{ ... }}:一條表達(dá)語句就相當(dāng)于一條Python語句,不需要結(jié)束語句,{{和}}之間可以放入任何Python表達(dá)式,Python模板語法可以自動運(yùn)行{{和}}中的語句并把運(yùn)行結(jié)果顯示在HTML模板中;
3、母板繼承:在母板中使用{% block block_name %}{% end %}進(jìn)行模塊的占位,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)入到需要使用的模板中,以達(dá)到代碼重用的效果,使模板編碼更加簡潔方便;
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)文件路徑下的相對路徑;
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">
<!-- 使用表達(dá)語句輸出變量的值 -->
<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實(shí)戰(zhàn)之賽車游戲的實(shí)現(xiàn)
如今的游戲可謂是層出不窮,不過小編發(fā)現(xiàn),賽車游戲也是深受大家歡迎啊,像跑跑卡丁車、QQ飛車,還有主機(jī)游戲極品飛車系列。本文將用Python中的Pygame模塊制作一個簡單的賽車游戲,感興趣的可以了解一下2022-03-03
numpy ndarray 取出滿足特定條件的某些行實(shí)例
今天小編就為大家分享一篇numpy ndarray 取出滿足特定條件的某些行實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Python ''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

