Jinja2實現(xiàn)模板渲染與訪問對象屬性流程詳解
1.Jinja2
1.簡介
Jinja2是Python下一個被廣泛應(yīng)用的模版引擎,他的設(shè)計思想來源于Django的模板引擎,并擴(kuò)展了其語法和一系列強(qiáng)大的功能。其中最顯著的一個是增加了沙箱執(zhí)行功能和可選的自動轉(zhuǎn)義功能,這對大多應(yīng)用的安全性來說是非常重要的。
2.Jinja2模板
Jinja 模板只是一個文本文件,可以 基于模板生成任何基于文本的格式(HTML、XML、CSV、LaTeX 等),一般用在前端的項目中,渲染 HTML 文件。
作為網(wǎng)絡(luò)工程師,可以將其用來批量生成網(wǎng)絡(luò)設(shè)備的配置或者其他需要批量生成文本的場景中。
模板包含變量或表達(dá)式,這兩者在模板求值的時候會被替換為值。模板中還有標(biāo)簽,控制模板的邏輯。模板語法的大量靈感來自于 Django 和 Python 。
2.模板渲染
- 創(chuàng)建和渲染模板的最基本方法是通過
Template,通過創(chuàng)建一個Template的實例Flask提供的 - render_template 函數(shù)封裝了Jinja2模板引擎
- render_template 函數(shù)的第一個參數(shù)是模板的文件名,后面的參數(shù)都是鍵值對,表示向模板中傳遞的參數(shù)值
app.py
# render_template 渲染模板
from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def hello_world(): # put application's code here
return render_template("index.html")
@app.route("/blog/<blog_id>")
def blog_detail(blog_id):
return render_template("blog_detail.html",blog_id=blog_id,username="小程")
if __name__ == '__main__':
app.run()templates/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>小程困了</h1>
</body>
</html>templates/blog_detail.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>博客詳情</title>
</head>
<body>
<p>您的用戶名是:{{ username }}</p>
<h1>您訪問的博客詳情是:{{ blog_id }}</h1>
</body>
</html>效果


3.模板訪問對象屬性
app.py
# render_template 渲染模板
from flask import Flask, render_template
app = Flask(__name__)
class User:
def __init__(self, username, email):
self.username = username
self.email = email
@app.route('/')
def hello_world(): # put application's code here
user = User(username="小程", email="xxx@qq.com")
person = {
"username": "張三",
"email": "zhangsan@qq.com"
}
return render_template("index.html", user=user, person=person)
@app.route("/blog/<blog_id>")
def blog_detail(blog_id):
return render_template("blog_detail.html", blog_id=blog_id, username="小程")
if __name__ == '__main__':
app.run()templates/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>小程困了</h1>
<div>{{ user.username }} / {{ user.email }}</div>
<div>{{ person['username'] }} / {{ person.email }}</div>
</body>
</html>效果

到此這篇關(guān)于Jinja2實現(xiàn)模板渲染與訪問對象屬性流程詳解的文章就介紹到這了,更多相關(guān)Jinja2模板渲染內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用TensorFlow創(chuàng)建生成式對抗網(wǎng)絡(luò)GAN案例
這篇文章主要為大家介紹了使用TensorFlow創(chuàng)建生成式對抗網(wǎng)絡(luò)GAN案例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
python讀取txt文件并取其某一列數(shù)據(jù)的示例
今天小編就為大家分享一篇python讀取txt文件并取其某一列數(shù)據(jù)的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02
Python?RawString與open文件的newline換行符遇坑解決
這篇文章主要為大家介紹了Python?RawString與open文件的newline換行符遇坑解決示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
Python實現(xiàn)解析路徑字符串并獲取每個文件夾名稱
在?Python?中,解析路徑字符串并獲取每個文件夾的名稱是一項常見的任務(wù),這篇文章主要為大家詳細(xì)介紹了Python解析路徑字符串的具體方法,希望對大家有所幫助2024-04-04
Python?pyinstaller打包exe最新完整圖文教程
pyinstaller是一個非常簡單的打包python的py文件的庫,下面這篇文章主要給大家介紹了關(guān)于Python?pyinstaller打包exe的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
python中readline判斷文件讀取結(jié)束的方法
這篇文章主要介紹了python中readline判斷文件讀取結(jié)束的方法,實例形式詳細(xì)分析了Python中readline的用法,需要的朋友可以參考下2014-11-11

