5.模板介紹

 

模板介紹

在以前的章節中,視圖函數只是直接返回文本,而在實際生產環境中其實不多這樣用,由於實際的頁面大可能是帶有樣式的HTML代碼,這可讓瀏覽器渲染出很是漂亮的頁面。目前市面上有很是多的模板系統,其中最知名最好用的就是DTL和Jinja2。DTLDjango Template Language三個單詞的縮寫,也就是Django自帶的模板語言。固然也能夠配置Django支持Jinja2等其餘模板引擎,可是做爲Django內置的模板語言,和Django能夠達到無縫銜接而不會產生一些不兼容的狀況。所以建議你們學習好DTLjavascript

DTL與普通的HTML文件的區別:

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

  1. DIRS:這是一個列表,在這個列表中能夠存放全部的模板路徑,之後在視圖中使用render或者render_to_string渲染模板的時候,會在這個列表的路徑中查找模板。
  2. APP_DIRS:默認爲True,這個設置爲True後,會在INSTALLED_APPS的安裝了的APP下的templates文件加中查找模板。
  3. 查找順序:好比代碼render('list.html')。先會在DIRS這個列表中依次查找路徑下有沒有這個模板,若是有,就返回。若是DIRS列表中全部的路徑都沒有找到,那麼會先檢查當前這個視圖所處的app是否已經安裝,若是已經安裝了,那麼就先在當前這個app下的templates文件夾中查找模板,若是沒有找到,那麼會在其餘已經安裝了的app中查找。若是全部路徑下都沒有找到,那麼會拋出一個TemplateDoesNotExist的異常。
相關文章
相關標籤/搜索