今天說下django template extends
我之前寫php的時(shí)候一般把公用的模板比如頁(yè)面頭部和頁(yè)面底部全部分離出來,
然后用require 'footer.php' 等
這樣如果要修改頭部后者尾部連接的話。只要修改2個(gè)文件就可以了。
開始我覺的這個(gè)已經(jīng)非常好用了。但是我接觸了django以后。發(fā)現(xiàn)django模板的繼承功能
比php的還更強(qiáng)大。。
比如我們寫一個(gè)index.php
<html>
<head>
<title>
test
</title>
<div id="daohang">
首頁(yè) python python教程 django教程 關(guān)于老王python
</div>
</head>
<body>
this is index
</body>
</html>
如果是php的話:
我會(huì)新建立一個(gè)header.php
然后把
<html>
....
</head>
之間的內(nèi)容全部放到header.php里
再在index.php里去調(diào)用header.php
index.php現(xiàn)在內(nèi)容是:
<?php require_once('header.php');?>
<body>
this is index
</body>
</html>
如果是django的話
我會(huì)新建立一個(gè)base.html主模板文件,這個(gè)主模板文件主要是描述整體的架構(gòu):
base.html:
<html>
<head>
<title>
test
</title>
<div id="daohang">
首頁(yè) python python教程 django教程 django教程 關(guān)于老王python
</div>
</head>
<body>
{%block content%}
this is index
{%endblock %}
</body>
</html>
如果其他類別的頁(yè)面,比如list.html頁(yè)面,他的頭部和底部都和首頁(yè)一樣。如果是php的話。
list.html這樣寫:
<?php require_once('header.php');?>
<body>
this is list
</body>
</html>
而如果用django template的extends那就方便了
list.html:
{%entends base.html %}這里定義了extends的話,我們定義的子模板就可以繼承父模板了
<body>
{%block content%}
this is list #這里定義了block的話,我們定義的子模板就可以重寫父模板定義的那部分內(nèi)容。
{%endblock%}
</body>
</html>
通過django template和php的比較感覺django開發(fā)大項(xiàng)目靈活性和效率都會(huì)比php快。。
但是php的速度比django template會(huì)快很多。哈哈。每個(gè)方法都有優(yōu)勢(shì)和短處,該用什么時(shí)候用什么。。
在前幾篇,我寫了一篇關(guān)
于django哲學(xué)的,有興趣的可以看看。