天天看點

Pycharm開發Django模闆使用詳解

模闆

在之前的章節中,視圖函數隻是直接傳回文本,而在實際生産環境中其實很少這樣用,因為實際的頁面大多是帶有樣式的HTML代碼,這可以讓浏覽器渲染出非常漂亮的頁面。目前市面上有非常多的模闆系統,其中最知名最好用的就是DTL和Jinja2。<code>DTL</code>是<code>Django Template Language</code>三個單詞的縮寫,也就是Django自帶的模闆語言。當然也可以配置Django支援Jinja2等其他模闆引擎,但是作為Django内置的模闆語言,和Django可以達到無縫銜接而不會産生一些不相容的情況。是以建議大家學習好DTL。

DTL模闆是一種帶有特殊文法的HTML檔案,這個HTML檔案可以被Django編譯,可以傳遞參數進去,實作資料動态化。在編譯完成後,生成一個普通的HTML檔案,然後發送給用戶端。

渲染模闆有多種方式。這裡講下兩種常用的方式。

<code>render_to_string</code>:找到模闆,然後将模闆編譯後渲染成Python的字元串格式。最後再通過<code>HttpResponse</code>類包裝成一個<code>HttpResponse</code>對象傳回回去。示例代碼如下:

以上方式雖然已經很友善了。但是django還提供了一個更加簡便的方式,直接将模闆渲染成字元串和包裝成<code>HttpResponse</code>對象一步到位完成。示例代碼如下:

在項目的<code>settings.py</code>檔案中。有一個<code>TEMPLATES</code>配置,這個配置包含了模闆引擎的配置,模闆查找路徑的配置,模闆上下文的配置等。模闆路徑可以在兩個地方配置。

<code>DIRS</code>:這是一個清單,在這個清單中可以存放所有的模闆路徑,以後在視圖中使用<code>render</code>或者<code>render_to_string</code>渲染模闆的時候,會在這個清單的路徑中查找模闆。

<code>APP_DIRS</code>:預設為<code>True</code>,這個設定為<code>True</code>後,會在<code>INSTALLED_APPS</code>的安裝了的<code>APP</code>下的<code>templates</code>檔案加中查找模闆。

查找順序:比如代碼<code>render('list.html')</code>。先會在<code>DIRS</code>這個清單中依次查找路徑下有沒有這個模闆,如果有,就傳回。如果<code>DIRS</code>清單中所有的路徑都沒有找到,那麼會先檢查目前這個視圖所處的<code>app</code>是否已經安裝,如果已經安裝了,那麼就先在目前這個<code>app</code>下的<code>templates</code>檔案夾中查找模闆,如果沒有找到,那麼會在其他已經安裝了的<code>app</code>中查找。如果所有路徑下都沒有找到,那麼會抛出一個<code>TemplateDoesNotExist</code>的異常。