python測試開發django-8.django模板繼承(block和extends)

1.前言

django模板繼承的作用:模板可以用繼承的方式來實現複用,減少冗餘內容。

一般來說,一個網站裏一般存在多個網頁的頭部和尾部內容都是一致的,我們就可以通過模板繼承來實現複用。

父模板用於放置可重複利用的內容,子模板繼承父模板的內容,並放置自己的內容。

2.父模板

標籤 block...endblock: 父模板中的預留區域,該區域留給子模板填充差異性的內容,不同預留區域名字不能相同。

{% block 名稱1 %} 
預留給子模板的區域,可以設置設置默認內容
{% endblock 名稱1 %}
{% block 名稱2 %} 
預留給子模板的區域,可以設置設置默認內容
{% endblock 名稱2 %}

3.子模板

子模板使用標籤 extends 繼承父模板:

{% extends "父模板路徑"%} 

子模板如果沒有設置父模板預留區域的內容,則使用在父模板設置的默認內容,當然也可以都不設置,就爲空。

子模板設置父模板預留區域的內容:

{ % block 名稱 % }
內容 
{% endblock 名稱 %}

4.調試過程

4.1.接下來我們在django項目【helloworld】的【helloworld/hello/templates】 裏新增一個【base_001.html】 文件,代碼如下:

 

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>父模板</title>
</head>
<body>
    <h1>Hello World!</h1>
    <p>這是父模板!</p>
    {% block mainbody %}
       <p>original</p>
    {% endblock %}
</body>
</html>

  

以上代碼中,名爲mainbody的block標籤是可以被繼承者們替換掉的部分。

所有的 {% block %} 標籤告訴模板引擎,子模板可以重載這些部分。

 

4.2.接下來我們在django項目【helloworld】的【helloworld/hello/templates】 裏新增一個【zilei_001.html】 文件,代碼如下:

 

 

 

{%extends "base_001.html" %}
 
{% block mainbody %}
<p>繼承了 [base_001]這個html 文件</p>
{% endblock %}

 

我們可以看到,zilei_001.html 中繼承 base_001.html,並替換特定 block裏的內容。

第一行代碼說明 zilei_001.html 繼承了base_001.html。可以看到,在zilei_001.html裏相同名字的 block 標籤用以替換 base_001.html裏的相應 block的內容。

 

4.3.編寫對應的一個新的視圖函數【zilei_one】和一個新的url匹配規則【url(r"^zilei0001/$",views.zilei_one)】。

 

 

 

 

 

 

4.4.啓動django項目【helloworld】,然後在任一瀏覽器輸入地址【http://127.0.0.1:8000/zilei0001/】,可以看到正確的展示結果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章