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實現(xiàn)從網(wǎng)絡(luò)攝像頭拉流的方法分享
這篇文章主要為大家詳細介紹了Python實現(xiàn)從網(wǎng)絡(luò)攝像頭拉流的幾種方法,文中的示例代碼講解詳細,具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解一下2023-01-01
Celery批量異步調(diào)用任務(wù)一直等待結(jié)果問題
這篇文章主要介紹了Celery批量異步調(diào)用任務(wù)一直等待結(jié)果問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
python?sklearn與pandas實現(xiàn)缺失值數(shù)據(jù)預(yù)處理流程詳解
對于缺失值的處理,主要配合使用sklearn.impute中的SimpleImputer類、pandas、numpy。其中由于pandas對于數(shù)據(jù)探索、分析和探查的支持較為良好,因此圍繞pandas的缺失值處理較為常用2022-09-09

