1. 程式人生 > >模板代碼的復用: 宏 繼承 包含

模板代碼的復用: 宏 繼承 包含

如果 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)是直接將目標模板文件整個渲染出來

模板代碼的復用: 宏 繼承 包含