Django 模板組件化
Django中也有模板組件化的思想。在模板的應用中有包含、繼承的概念。
包含:include
不難理解,包含就是指一個模板裏包含另一模板裏內容
舉個栗子
比如我們要再A.html裏應用B.html裏的內容,也就是A裏包含B,我們可以這樣寫:
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
{% include 'B.html' %}
</body>
</html>
用
{% include 'B.html' %}
來寫即可。這時候A裏引用的js或者css,B都可以使用。所以B模板裏可以只寫body裏的代碼,如:
<div>
<h1>我是B模板</h1>
</div>
繼承:extends
所謂繼承就是子頁面可以繼承父頁面的裏內容,也可以重寫父頁面的某些內容
舉個栗子
比如我們要C.html繼承A.html,並且重寫指定部分的代碼:
A.html
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}默認標題{% endblock %}</title>
</head>
<body>
{% include 'B.html' %}
{% block content %}
<div>這裏是默認內容,所有繼承自這個模板的,如果不覆蓋就顯示這裏的默認內容。</div>
{% endblock %}
</body>
</html>
C.html
{% extends 'A.html' %}
{% block title %}歡迎光臨首頁{% endblock %}
{% block content %}
這裏是C頁面,歡迎光臨
{% endblock %}
說明:
block 標籤是告訴django我這個地方是可以重寫的。比如A頁面裏有個{% block title %}默認標題{% endblock %},我在C頁面同樣通過{% block title %}歡迎光臨首頁{% endblock %}這個標籤就可以重寫A頁面相對應的部分了。同理{% block content %}{% endblock %}標籤也是一樣的道理。
無論是繼承還是包含,子頁面裏都可以使用父頁面裏引入的js和css。