<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 第一節:模板介紹 # 模板 在之前的章節中,視圖函數只是直接返回文本,而在實際生產環境中其實很少這樣用,因為實際的頁面大多是帶有樣式的HTML代碼,這可以讓瀏覽器渲染出非常漂亮的頁面。目前市面上有非常多的模板系統,其中最知名最好用的就是DTL和Jinja2。`DTL`是`Django Template Language`三個單詞的縮寫,也就是Django自帶的模板語言。當然也可以配置Django支持Jinja2等其他模板引擎,但是作為Django內置的模板語言,和Django可以達到無縫銜接而不會產生一些不兼容的情況。因此建議大家學習好DTL。 ## DTL與普通的HTML文件的區別: DTL模板是一種帶有特殊語法的HTML文件,這個HTML文件可以被Django編譯,可以傳遞參數進去,實現數據動態化。在編譯完成后,生成一個普通的HTML文件,然后發送給客戶端。 ## 渲染模板: 渲染模板有多種方式。這里講下兩種常用的方式。 1. `render_to_string`:找到模板,然后將模板編譯后渲染成Python的字符串格式。最后再通過`HttpResponse`類包裝成一個`HttpResponse`對象返回回去。示例代碼如下: ``` <pre class="calibre12">``` <span class="hljs-keyword">from</span> django.template.loader <span class="hljs-keyword">import</span> render_to_string <span class="hljs-keyword">from</span> django.http <span class="hljs-keyword">import</span> HttpResponse <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">book_detail</span><span class="hljs-params">(request,book_id)</span>:</span> html = render_to_string(<span class="hljs-string">"detail.html"</span>) <span class="hljs-keyword">return</span> HttpResponse(html) ``` ``` 2. 以上方式雖然已經很方便了。但是django還提供了一個更加簡便的方式,直接將模板渲染成字符串和包裝成`HttpResponse`對象一步到位完成。示例代碼如下: ``` <pre class="calibre12">``` <span class="hljs-keyword">from</span> django.shortcuts <span class="hljs-keyword">import</span> render <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">book_list</span><span class="hljs-params">(request)</span>:</span> <span class="hljs-keyword">return</span> render(request,<span class="hljs-string">'list.html'</span>) ``` ``` ## 模板查找路徑配置: 在項目的`settings.py`文件中。有一個`TEMPLATES`配置,這個配置包含了模板引擎的配置,模板查找路徑的配置,模板上下文的配置等。模板路徑可以在兩個地方配置。 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`的異常。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看