python jinja2模板的使用示例
模板的用處
jinja2 可以用來(lái)修改配置文件,把配置文件的關(guān)鍵地方可以用變量來(lái)進(jìn)行替換
模板語(yǔ)法
模板語(yǔ)法和django的模板語(yǔ)法差不多 在jinja2中,存在三種語(yǔ)法:
- 控制結(jié)構(gòu){% %}
- 變量取值{{ }}
- 注釋{# #}
- for 循環(huán)
{% for user in users %} {{user.username}} {% endfor %}
迭代字典
{% for key,value in my_dict.iteritems() %} {{ key }} {{ value }} {% endfor %}
過(guò)濾器
常用的過(guò)濾器有:
- safe: 渲染時(shí)值不轉(zhuǎn)義
- capitialize: 把值的首字母轉(zhuǎn)換成大寫(xiě),其他子母轉(zhuǎn)換為小寫(xiě)
- lower: 把值轉(zhuǎn)換成小寫(xiě)形式
- upper: 把值轉(zhuǎn)換成大寫(xiě)形式
- title: 把值中每個(gè)單詞的首字母都轉(zhuǎn)換成大寫(xiě)
- trim: 把值的首尾空格去掉
- striptags: 渲染之前把值中所有的HTML標(biāo)簽都刪掉
- join: 拼接多個(gè)值為字符串
- replace: 替換字符串的值
- round: 默認(rèn)對(duì)數(shù)字進(jìn)行四舍五入,也可以用參數(shù)進(jìn)行控制
- int: 把值轉(zhuǎn)換成整型
{{ 'abc' | catialize }} # Abc
繼承和super函數(shù)
<!DOCTYPE html> <html lang="en"> <head> {% block head %} <link rel="stylesheet" href="style.css" rel="external nofollow" /> <title>{% block title %}{% endblock %} - My Webpage</title> {% endblock %} </head> <body> <div id="content">{% block content %}{% endblock %}</div> <div id="footer"> {% block footer %} <script>This is javascript code </script> {% endblock %} </div> </body> </html>
{% extend "base.html" %} # 繼承base.html文件 {% block title %} Dachenzi {% endblock %} # 定制title部分的內(nèi)容 {% block head %} {{ super() }} # 用于獲取原有的信息 <style type='text/css'> .important { color: #FFFFFF } </style> {% endblock %} # 其他不修改的原封不動(dòng)的繼承
利用jinja2 進(jìn)行渲染
jinja2 模塊中有一個(gè)名為Enviroment的類(lèi),這個(gè)類(lèi)的實(shí)例用于存儲(chǔ)配置和全局對(duì)象,然后從文件系統(tǒng)或其他位置中加載模板
1.基本使用方法
- PackageLoader: 包加載器
- FileSystemLoader: 文件系統(tǒng)加載器
2.PackageLoader
使用包加載器來(lái)加載文檔的最簡(jiǎn)單方式如下:
from jinja2 import PackageLoader, Environment env = Environment(loader=PackageLoader('python_project', 'templates')) # 創(chuàng)建一個(gè)包加載器對(duì)象 template = env.get_template("base.html") # 獲取一個(gè)模板文件 template.render(name="daxin", age=18)
- PackageLoader()兩個(gè)測(cè)試為:python包的名稱(chēng),以及模板目錄名稱(chēng)
- get_template(): 獲取模板目錄下的某個(gè)具體文件
- render(): 接受變量,對(duì)模板進(jìn)行渲染
3.FileSystemLoader
文件系統(tǒng)加載器,不需要模板文件存在某個(gè)Python包下,可以直接訪問(wèn)系統(tǒng)中的文件
import os from jinja2 import PackageLoader, Environment, FileSystemLoader path_dir = "/mnt/e/files" loader = FileSystemLoader(searchpath=path_dir) env = Environment(loader=loader) template = env.get_template("index.opf") # 模板文件 buf = template.render(name="daxin", age=18) with open(os.path.join("path_dir", "index.opf"), "w" ) as fp: fp.write(buf)
- FileSystemLoader(): searchpath參數(shù)后面跟的是文件所在的目錄
- get_template(): 獲取模板目錄下的某個(gè)具體文件
- render() 接受變量,對(duì)模板進(jìn)行渲染
- 渲染后的內(nèi)容可以保存到配置文件中
以上就是python jinja2模板的使用示例的詳細(xì)內(nèi)容,更多關(guān)于python jinja2模板的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python自動(dòng)化辦公之Excel數(shù)據(jù)的寫(xiě)入
這篇文章主要為大家詳細(xì)介紹一下Python中excel的寫(xiě)入模塊- xlsxwriter,并利用該模塊實(shí)現(xiàn)Excel數(shù)據(jù)的寫(xiě)入,感興趣的小伙伴可以了解一下2022-05-05python使用tcp實(shí)現(xiàn)局域網(wǎng)內(nèi)文件傳輸
這篇文章主要介紹了python使用tcp實(shí)現(xiàn)局域網(wǎng)內(nèi)文件傳輸,文件包括文本,圖片,視頻等,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07OpenCV圖像縮放之cv.resize()函數(shù)詳解
resize函數(shù)opencv中專(zhuān)門(mén)用來(lái)調(diào)整圖像大小的函數(shù),下面這篇文章主要給大家介紹了關(guān)于OpenCV圖像縮放之cv.resize()函數(shù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09使用python操作lmdb對(duì)數(shù)據(jù)讀取的實(shí)例
這篇文章主要介紹了使用python操作lmdb對(duì)數(shù)據(jù)讀取的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12python之DataFrame實(shí)現(xiàn)excel合并單元格
這篇文章主要為大家詳細(xì)介紹了python之DataFrame實(shí)現(xiàn)excel合并單元格,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5多線程中信號(hào)與槽的詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5多線程中信號(hào)與槽的詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03使用Pandas實(shí)現(xiàn)清洗客戶編碼異常數(shù)據(jù)
在不同行業(yè)中,我們經(jīng)常會(huì)遇到一個(gè)麻煩的問(wèn)題:數(shù)據(jù)清洗,尤其是當(dāng)我們需要處理客戶編碼異常數(shù)據(jù)時(shí),下面小編就來(lái)和大家分享一下常用的解決辦法吧2023-07-07Selenium環(huán)境變量配置(火狐瀏覽器)及驗(yàn)證實(shí)現(xiàn)
這篇文章主要介紹了Selenium環(huán)境變量配置(火狐瀏覽器)及驗(yàn)證實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12