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