模板代碼的復用: 宏 繼承 包含
阿新 • • 發佈:2018-06-02
如果 bsp string control 入參 type found 內容 頁面
當多個模板具有相同的頂部/底部內容/部分內容時,可以使用這三者來實現
宏是一個函數, 返回一個模板或者html字符串
- 定義宏
{% macro input(name,value=‘‘,type=‘text‘) %}
<input type="{{type}}" name="{{name}}"
value="{{value}}" class="form-control">
{% endmacro %}
- 調用宏
{{ input(‘name‘ value=‘zs‘)}}
繼承: 重用模板公共內容 :
{% block top %} {% endblock %}
- 不支持多繼承
- 為了便於閱讀,在子模板中使用extends時,盡量寫在模板的第一行。
- 不能在一個模板文件中定義多個相同名字的block標簽。
- 當在頁面中使用多個block標簽時,建議給結束標簽起個名字,當多個block嵌套時,閱讀性更好。
包含: 將另一個模板整個加載到當前模板中,並直接渲染。
- include的使用
{% include ‘hello.html‘ %}
包含在使用時,如果包含的模板文件不存在時,程序會拋出TemplateNotFound異常,可以加上 ignore missing
關鍵字。如果包含的模板文件不存在,會忽略這條include語句。
- include 的使用加上關鍵字ignore missing
{% include ‘hello.html‘ ignore missing %}
- 宏(Macro)、繼承(Block)、包含(include)均能實現代碼的復用。
- 繼承(Block)的本質是代碼替換,一般用來實現多個頁面中重復不變的區域。
- 宏(Macro)的功能類似函數,可以傳入參數,需要定義、調用。
- 包含(include)是直接將目標模板文件整個渲染出來
模板代碼的復用: 宏 繼承 包含