1. 程式人生 > >關於Django的模板繼承與注意事項

關於Django的模板繼承與注意事項

Django中的模板引擎中,子模板繼承父模板中是這樣實現的。
    
在父模板(假設url為:dad.html)中,

<!doctype html>
  <head>
  ...
  {% block title %}
  <title>aaa</title>
  {% endblock %}
  </head>
  <body>
    {% block content %}
        <div>
            <p>aaa</p>
        </div
>
{% endblock %}{% block text %} <h1>我沒有被覆蓋</h1> {% endblock %} </body> </html>

在子模板(假設url為:child.html)中沒有任何東西,只有以下程式碼

{% block title %}
    <title>bbb</title>
{% endblock %}{% block content %}
    <div>
    <p>bbbbb</p>
    </div
>
{% endblock %}

當我們打開了子模板的路徑後,子模板中block包含的東西為覆蓋掉父模板中同名block所包含的東西。若父模板中有東西沒有被子模板覆蓋,如上面父模板中的text。那麼父模板中名為text的block的內容將會被繼承下來到子模板中顯示。

    
需要注意的是:
1. block的格式為:{% block name %}…{% endblock %}
2. block中,前面的百分號的後面需要有空格,後面的百分號前面需要有空格。必須按格式來,否則模板引擎會識別不了
3. 說到底,子模板的繼承其實就是 替換掉 父模板中同名的block塊,其餘沒有被替換掉的就被子模板原封不動的繼承了下來。