在之前的章節中,檢視函式只是直接返回文字,而在實際生產環境中其實很少這樣用,因為實際的頁面大多是帶有樣式的html**,這可以讓瀏覽器渲染出非常漂亮的頁面。目前市面上有非常多的模板系統,其中最知名最好用的就是dtl和jinja2。dtl
是django template language
三個單詞的縮寫,也就是django自帶的模板語言。當然也可以配置django支援jinja2等其他模板引擎,但是作為django內建的模板語言,和django可以達到無縫銜接而不會產生一些不相容的情況。因此建議大家學習好dtl
。
dtl模板是一種帶有特殊語法的html檔案,這個html檔案可以被django編譯,可以傳遞引數進去,實現資料動態化。在編譯完成後,生成乙個普通的html檔案,然後傳送給客戶端。
渲染模板有多種方式。這裡講下兩種常用的方式。
render_to_string:找到模板,然後將模板編譯後渲染成python的字串格式。最後再通過httpresponse類包裝成乙個httpresponse物件返回回去。示例**如下:
return httpresponse(html)以上方式雖然已經很方便了。但是django還提供了乙個更加簡便的方式,直接將模板渲染成字串和包裝成httpresponse物件一步到位完成。示例**如下:
from django.shortcuts import render
def book_list(request):
return render(request,'list.html')
在專案的settings.py
檔案中。有乙個templates
配置,這個配置包含了模板引擎的配置,模板查詢路徑的配置,模板上下文的配置等。模板路徑可以在兩個地方配置。
dirs
:這是乙個列表,在這個列表中可以存放所有的模板路徑,以後在檢視中使用render
或者render_to_string
渲染模板的時候,會在這個列表的路徑中查詢模板。
在模板中使用變數,需要將變數放到}
中.
如果想要訪問物件的屬性,那麼可以通過物件.屬性名
來進行訪問.
class
person
(object):
def__init__
(self,user)
: self.user = user
context =
以後想要訪問`person`的`user`.那就就是通過`person.user`
如果想要訪問乙個字典的可以對應的value,那麼只能通過字典.可以
的方式進行訪問,不能通過中括號
的形式來進行訪問.
context =
}
那麼以後在模板中訪問`user`,就是`person.user`
因為在訪問字典的key
的時候也是使用點.
來訪問,因此不能在字典中定義字典本身就you的屬性名當作key
,否則字典的那個屬性將變成字典中的可以了.示例**如下:
context =
}
以上因為將`keys`作為`person`這個字典的`key`了.因此以後在模板中訪問`person.keys`的時候,返回的不是這個字典的所有`key`,而是對應的值`asd`
如果想要訪問列表或者元組,那麼也是通過點.
的方式進行訪問,不能通過中括號
的形式進行訪問,這一點和python中是不一樣的.示例**如下:
}
模板中變數
格式 就是試圖向模板傳遞資料 變數名稱就是字典中的key 值就是字典key對應的value值 如果模板渲染的變數不存在 則插入空字元 什麼都沒有 不會報錯 模板中使用語法 字典查詢 屬性或方法 數字索引1.獲取當前使用者 2.獲取當前 3.獲取當前get引數 4.組合使用 作用 1.在輸出中建立文字...
模板變數及模板過濾器
模板標籤 常用的標籤 模板標籤的例子 以if for為例 模板的繼承與應用 django的強大在於模板的繼承。模板繼承可以讓你建立乙個基本的 股架 模板,它包含站點中全部的元素,並且可以定義能夠被子模版覆蓋的block。模板的繼承的例子 base.html 這個作為模板繼承頁 index.html在...
Thinkphp 框架模板變數及模板輸出
thinkphp框架 模板操作變數輸出 執行方法並輸出返回值 執行方法不輸出 輸出session變數 輸出cookie變數 輸出配置引數 輸出語言變數 輸出get變數 輸出post變數 輸出常量 模板輸出 1 直接呼叫預設 index 操作模板 this display 對應winxin tpl d...