有些模版**是重複的。因此可以單獨抽取出來,以後**需要用到,就直接使用include
進來就可以了。
如果想要在include
子模版的時候,傳遞一些引數,那麼可以使用with ***=***
的形式。示例**如下:
在前端頁面開發中。有些**是需要重複使用的。這種情況可以使用include
標籤來實現。也可以使用另外乙個比較強大的方式來實現,那就是模版繼承。模版繼承類似於python
中的類,在父類中可以先定義好一些變數和方法,然後在子類中實現。模版繼承也可以在父模版中先定義好一些子模版需要用到的**,然後子模版直接繼承就可以了。並且因為子模版肯定有自己的不同**,因此可以在父模版中定義乙個block介面,然後子模版再去實現。以下是父模版的**:
這個模版,我們取名叫做
lang
="en"
>
>
rel=
"stylesheet"
href=""
/>
>
我的站點title
>
head
>
>
"sidebar"
>
>
>
href
="/"
>
首頁a>
li>
>
href
="/blog/"
>
部落格a>
li>
ul>
div>
"content"
>
div>
body
>
html
>
base.html
,定義好乙個簡單的html
骨架,然後定義好兩個block
介面,讓子模版來根據具體需求來實現。子模板然後通過extends
標籤來實現,示例**如下:
需要注意的是:extends標籤必須放在模版的第開始的位置
部落格列表
>
}h2>
>
}p>
子模板中的**必須放在block中,否則將不會被渲染。
如果在某個block
中需要使用父模版的內容,那麼可以使用}
來繼承。比如上例,,如果想要使用父模版的
title
,那麼可以在子模版的title block
中使用}
來實現。
在定義block
的時候,除了在block
開始的地方定義這個block
的名字,還可以在block
結束的時候定義名字。比如。這在大型模版中顯得尤其有用,能讓你快速的看到
block
包含在**。
在乙個網頁中,不僅僅只有乙個html
骨架,還需要css
樣式檔案,js
執行檔案以及一些等。因此在dtl
中載入靜態檔案是乙個必須要解決的問題。在dtl
中,使用static
標籤來載入靜態檔案。要使用static
標籤,首先需要。載入靜態檔案的步驟如下:
確保在settings.py
中設定了static_url
。 (當這個專案不屬於本機電腦時,就需要在位址列加入』/static/』+檔名稱來獲取相應的靜態檔案)
在模版中使用staticfiles_dirs =
[os.path.join(base_dir,
"static"
)]
load
標籤載入static
標籤。比如要載入在專案的static
資料夾下的style.css
的檔案。那麼示例**如下:
如果不想每次在模版中載入靜態檔案都使用
rel=
"stylesheet"
href=""
>
load
載入static
標籤,那麼可以在settings.py
中的templates/options
新增'builtins':['django.templatetags.static']
,這樣以後在模版中就可以直接使用static
標籤,而不用手動的load
了。
from django.conf import settings
from django.conf.urls.static import static
urlpatterns =
[# 其他的url對映
]+ static(settings.static_url, document_root=settings.static_root)
Django 模板筆記
變數 檢視傳遞給模板的資料,要遵循識別符號規則 語法 注意 如果變數不存在,則插入的是空字串 在模板中使用點語法 1 字典 2 屬性或者方法 3 數字索引 在模板中呼叫物件中的方法,不能傳遞引數 語法 作用 1 在輸出中建立文字 2 控制邏輯或者迴圈 格式 語句 語句語句2 格式 語句語句2 注意 ...
Django學習筆記 模板
簡單點來說,無外乎就是從前端得到資料,資料在後端處理,將資料返回給前端。這裡就不說如何獲取前端資料了。之前的demo中有一種 return httpresponse u 接收這個請求後,返回的資料 但是這種基本是用不到了,正常的做法是url中的name屬性和view中render。當然也可能使用js...
Django筆記 模板Templates
django模板語言,簡寫dtl,定義在django.template包中 由startproject命令生成的settings.py定義關於模板的值 常用方式 在專案的根目錄下建立templates目錄,設定dirs值 dirs os.path join base dir,templates 模板...