【Flask】Jinja2之模板继承
一般我們的網(wǎng)站雖然頁(yè)面多,但是很多部分是重用的,比如頁(yè)首,頁(yè)腳,導(dǎo)航欄之類的。對(duì)于每個(gè)頁(yè)面,都要寫(xiě)這些代碼,很麻煩。
 Flask的Jinja2模板支持模板繼承功能,省去了這些重復(fù)代碼。
塊和繼承
案例
父模板
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>父模板</title> </head> <body>{% block temp1 %}<P>頁(yè)面的頭部</P><hr> {% endblock %}{% block temp2 %}<P>頁(yè)面的尾部</P><hr> {% endblock %}</body> </html>子模版
 注意子模版要想繼承父模板需要在html模板的頂部加上一行代碼
 {% extends “父模板文件名字.html” %}
 例如:{% extends “parent.html” %}
視圖
from flask import Flask,render_template#todo 初始化Flask項(xiàng)目的服務(wù) app = Flask(__name__)@app.route('/extends') def hello_world():return render_template("child.html")if __name__ == '__main__':#0.0.0.0:代表當(dāng)前的系統(tǒng)的所有的ip地址,# 設(shè)置端口為8080,# flask的debug模式:把錯(cuò)誤的信息顯示到頁(yè)面中app.run(host='0.0.0.0',port=8080,debug=True)啟動(dòng)項(xiàng)目
 發(fā)現(xiàn)父模板中頁(yè)面的頭部沒(méi)有繼承,什么原因?
原因:父模板中定義了“temp1”,子模版也定義了“temp1”,子模板重寫(xiě)了父模板中的方法,所以不會(huì)繼承。
 如果想要繼承需要加“{{ super() }}”
include標(biāo)簽
這個(gè)標(biāo)簽相當(dāng)于是直接將指定的模版中的代碼復(fù)制粘貼到當(dāng)前位置。include標(biāo)簽,如果想要使用父模版中的變量,直接用就可以了。include的路徑,也是跟import一樣,直接從templates根目錄下去找,不要以相對(duì)路徑去找。
案例:
頁(yè)面的頭部文件
 
 頁(yè)面的尾部文件
 
 目標(biāo)文件
 
 視圖
啟動(dòng)項(xiàng)目
 
總結(jié)
以上是生活随笔為你收集整理的【Flask】Jinja2之模板继承的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 【Flask】项目中使用请求钩子的妙处有
- 下一篇: 关于解决mybase7继续使用的方法
