1. 程式人生 > >Flask——模板

Flask——模板

模板程式碼的複用:

在模板的使用中,會遇到下面3中情況
1.多個模板具有完全相同的頂部和底部內容
2.多個模板中具有相同的模板程式碼內容,但是內容中部分值不一樣
3.多個模板中具有完全相同的 html 程式碼塊內容

遇到以上三種情況,可以使用巨集、繼承、包含來實現。

巨集的定義:

<!--定義一個巨集-->可以讓巨集的擴充套件性強,可以給其設定引數
{% macro fun(type,size) %}
    <input type="{{type}}" name = 'user' placeholder = 'user' size = {{size}}><br>
    <input type="{{type}}" name = 'password' placeholder = 'password' size = {{size}}><br>
    <input type="submit">
{% endmacro %}
{{ fun('text',60) }}

封裝巨集然後呼叫
在一個模板檔案中,定義了一個巨集,在另一個模板檔案中呼叫。
1.匯入巨集
{% import macro.html as f %}
{{ f.fun( ‘text’ , ’60’) }}

繼承(block)

標籤定義的內容:{% block  top %}內容{%endblock%}
在子模板中進行整合,{% extends 'base.html' %}
同時在進行重寫的時候:{% block  top %} 重寫的內容{%endblock%}
當然,可以使用{{super()}}實現即用了父類內容,還能自己實現的。


from flask import Flask,render_template

app = Flask(__name__)

	# 模板繼承:
	# 1.多個頁面中具有相同的頂部,底部或者部分中間內容的時候。
	# 2.多個頁面中重複的內容,可以不用封裝block。
	# 3.多個 頁面中特有的內容可以封裝成block快,可以讓子類重寫
	# 4.靈活運用。
	#5.模板不支援多繼承。
	#6.extends語句建議寫在第一行。extends語句下面的內容需要寫在block裡面才會生效,如果想要實現自己的內容,可以解除安裝extends上面,但是不建議,可以在父類中封裝block,然後在子類中實現。
@app.route('/')
def index():
    return render_template('block.html')


	# 巨集的概念:相當於模板中的函式,功能相當於Python中的函式,關鍵字macro相當於Python中的def
	# 巨集的作用:實現模板頁面程式碼的複用。
if __name__ == '__main__':
    app.run(debug=True)

包含

包含:就是把html頁面完整的複用。{ % include ‘base.html’ ignore missing %}
建議加上ignore missing ,在找不到檔案時不報錯。