模板繼承(extend) (Day68)

2022-04-18 20:26:23 字數 2229 閱讀 8497

django模版引擎中最強大也是最複雜的部分就是模版繼承了。模版繼承可以讓您建立乙個基本的「骨架」模版,它包含您站點中的全部元素,並且可以定義能夠被子模版覆蓋的 blocks 。

通過從下面這個例子開始,可以容易的理解模版繼承:

doctype html

>

<

html

lang

="en"

>

<

head

>

<

link

rel="stylesheet"

herf

="style.css"

/>

<

title

>my amazing site

title

>

head

>

<

body

>

<

div

id="sidebar"

>

<

ul>

<

li><

a herf

="/"

>home

a>

li>

<

li><

a herf

="/blog"

>blog

a>

li>

ul>

div>

<

div

id="content"

>

div>

body

>

html

>

這個模版,我們把它叫作base.html, 它定義了乙個可以用於兩列排版頁面的簡單html骨架。「子模版」的工作是用它們的內容填充空的blocks。

在這個例子中,block標籤定義了三個可以被子模版內容填充的block。block告訴模版引擎: 子模版可能會覆蓋掉模版中的這些位置。

子模版可能看起來是這樣的:12

3456

78910

my amazing blog

}</h2>

}</p>

extends標籤是這裡的關鍵。它告訴模版引擎,這個模版「繼承」了另乙個模版。當模版系統處理這個模版時,首先,它將定位父模版——在此例中,就是「base.html」。

那時,模版引擎將注意到base.html中的三個block標籤,並用子模版中的內容來替換這些block。根據blog_entries的值,輸出可能看起來是這樣的:12

3456

78910

1112

1314

1516

1718

1920

2122

2324

my amazing blog</title>

</head>

id="sidebar">

最後,請注意您並不能在乙個模版中定義多個相同名字的block標籤。這個限制的存在是因為block標籤的作用是「雙向」的。這個意思是,block標籤不僅提供了乙個坑去填,它還在 _父模版_中定義了填坑的內容。如果在乙個模版中有兩個名字一樣的block標籤,模版的父模版將不知道使用哪個block的內容。

yii 模板繼承

render和renderpartial的區別 前者渲染父模板,將渲染的內容嵌入到父模板中 後者不渲染父模板,只會輸出本次渲染的區域性內容。所以,模板繼承要使用方法render,而不是renderpartial。模板繼承 1 子模板繼承父模板 1 控制器新增語句public layout 自定義的父...

模板布局 繼承

乙個 的多個頁面往往有著相同的頁首和頁尾,每次都重新編寫效率就很低,這個時候利用模板繼承就很有效了。1 首先編寫乙個templates資料夾下的news.html模板 lang en xmlns th head th fragment header th text h div body html 2...

django模板繼承

1 本質上說 模板繼承就是先構造乙個基礎框架模板,而後在其子模板中對它所包含站點共用部分和定義進行過載。建立 base.html模板 謝謝對 的支援 2 建立子模板test4.html 現在時間 現在時間是 3 編寫檢視函式 views.py def test4 request 51 now dat...