在以前的章節中,視圖函數只是直接返回文本,而在實際生產環境中其實不多這樣用,由於實際的頁面大可能是帶有樣式的HTML代碼,這可讓瀏覽器渲染出很是漂亮的頁面。目前市面上有很是多的模板系統,其中最知名最好用的就是DTL和Jinja2。DTL
是Django Template Language
三個單詞的縮寫,也就是Django自帶的模板語言。固然也能夠配置Django支持Jinja2等其餘模板引擎,可是做爲Django內置的模板語言,和Django能夠達到無縫銜接而不會產生一些不兼容的狀況。所以建議你們學習好DTL
。javascript
DTL模板是一種帶有特殊語法的HTML文件,這個HTML文件能夠被Django編譯,能夠傳遞參數進去,實現數據動態化。在編譯完成後,生成一個普通的HTML文件,而後發送給客戶端。html
渲染模板有多種方式。這裏講下兩種經常使用的方式。java
render_to_string:找到模板,而後將模板編譯後渲染成Python的字符串格式。最後再經過HttpResponse類包裝成一個HttpResponse對象返回回去。示例代碼以下:ios
from django.template.loader import render_to_string from django.http import HttpResponse def book_detail(request,book_id): html = render_to_string("detail.html") return HttpResponse(html)
以上方式雖然已經很方便了。可是django還提供了一個更加簡便的方式,直接將模板渲染成字符串和包裝成HttpResponse對象一步到位完成。示例代碼以下:web
from django.shortcuts import render def book_list(request): return render(request,'list.html')
在項目的settings.py
文件中。有一個TEMPLATES
配置,這個配置包含了模板引擎的配置,模板查找路徑的配置,模板上下文的配置等。模板路徑能夠在兩個地方配置。django
DIRS
:這是一個列表,在這個列表中能夠存放全部的模板路徑,之後在視圖中使用render
或者render_to_string
渲染模板的時候,會在這個列表的路徑中查找模板。APP_DIRS
:默認爲True
,這個設置爲True
後,會在INSTALLED_APPS
的安裝了的APP下的templates
文件加中查找模板。render('list.html')
。先會在DIRS這個列表中依次查找路徑下有沒有這個模板,若是有,就返回。若是DIRS
列表中全部的路徑都沒有找到,那麼會先檢查當前這個視圖所處的app
是否已經安裝,若是已經安裝了,那麼就先在當前這個app
下的templates
文件夾中查找模板,若是沒有找到,那麼會在其餘已經安裝了的app
中查找。若是全部路徑下都沒有找到,那麼會拋出一個TemplateDoesNotExist
的異常。