Flask——模板
阿新 • • 發佈:2018-11-10
模板程式碼的複用:
在模板的使用中,會遇到下面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 ,在找不到檔案時不報錯。