<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                Jinja 中最強大的部分就是模板繼承。模板繼承允許你構建一個包含你站點共同元素的基 本模板“骨架”,并定義子模板可以覆蓋的?**塊**?。 聽起來復雜,實際上很簡單。從例子上手是最易于理解的。 ### 基本模板[](http://docs.jinkan.org/docs/jinja2/templates.html#id11 "Permalink to this headline") 這個模板,我們會把它叫做?base.html?,定義了一個簡單的 HTML 骨架文檔,你可 能使用一個簡單的兩欄頁面。用內容填充空的塊是子模板的工作: ~~~ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="en"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> {% block head %} <link rel="stylesheet" href="style.css" /> <title>{% block title %}{% endblock %} - My Webpage</title> {% endblock %} </head> <body> <div id="content">{% block content %}{% endblock %}</div> <div id="footer"> {% block footer %} &copy; Copyright 2008 by <a href="http://domain.invalid/">you</a>. {% endblock %} </div> </body> ~~~ 在本例中,?{%?block?%}?標簽定義了四個字幕版可以填充的塊。所有的?block?標簽 告訴模板引擎子模板可以覆蓋模板中的這些部分。 ### 子模板[](http://docs.jinkan.org/docs/jinja2/templates.html#id12 "Permalink to this headline") 一個子模板看起來是這樣: ~~~ {% extends "base.html" %} {% block title %}Index{% endblock %} {% block head %} {{ super() }} <style type="text/css"> .important { color: #336699; } </style> {% endblock %} {% block content %} <h1>Index</h1> <p class="important"> Welcome on my awesome homepage. </p> {% endblock %} ~~~ {%?extend?%}?標簽是這里的關鍵。它告訴模板引擎這個模板“繼承”另一個模板。 當模板系統對這個模板求值時,首先定位父模板。 extends 標簽應該是模板中的第一個 標簽。它前面的所有東西都會按照普通情況打印出來,而且可能會導致一些困惑。更多 該行為的細節以及如何利用它,見?[*Null-Master 退回*](http://docs.jinkan.org/docs/jinja2/tricks.html#null-master-fallback)?。 模板的文件名依賴于模板加載器。例如?FileSystemLoader?允許你用文件名訪 問其它模板。你可以使用斜線訪問子目錄中的模板: ~~~ {% extends "layout/default.html" %} ~~~ 這種行為也可能依賴于應用內嵌的 Jinja 。注意子模板沒有定義?footer?塊,會 使用父模板中的值。 你不能在同一個模板中定義多個同名的?{%?block?%}?標簽。因為塊標簽以兩種 方向工作,所以存在這種限制。即一個塊標簽不僅提供一個可以填充的部分,也在父級 定義填充的內容。如果同一個模板中有兩個同名的?{%?blok?%}?標簽,父模板 無法獲知要使用哪一個塊的內容。 如果你想要多次打印一個塊,無論如何你可以使用特殊的?self?變量并調用與塊同名 的函數: ~~~ <title>{% block title %}{% endblock %}</title> <h1>{{ self.title() }}</h1> {% block body %}{% endblock %} ~~~ ### Super 塊[](http://docs.jinkan.org/docs/jinja2/templates.html#super "Permalink to this headline") 可以調用?super?來渲染父級塊的內容。這會返回父級塊的結果: ~~~ {% block sidebar %} <h3>Table Of Contents</h3> ... {{ super() }} {% endblock %} ~~~ ### 命名塊結束標簽[](http://docs.jinkan.org/docs/jinja2/templates.html#id13 "Permalink to this headline") Jinja2 允許你在塊的結束標簽中加入的名稱來改善可讀性: ~~~ {% block sidebar %} {% block inner_sidebar %} ... {% endblock inner_sidebar %} {% endblock sidebar %} ~~~ 無論如何,?endblock?后面的名稱一定與塊名匹配。 ### 嵌套塊和作用域[](http://docs.jinkan.org/docs/jinja2/templates.html#id14 "Permalink to this headline") 嵌套塊可以勝任更復雜的布局。而默認的塊不允許訪問塊外作用域中的變量: ~~~ {% for item in seq %} <li>{% block loop_item %}{{ item }}{% endblock %}</li> {% endfor %} ~~~ 這個例子會輸出空的??項,因為?item?在塊中是不可用的。其原因是,如果 塊被子模板替換,變量在其塊中可能是未定義的或未被傳遞到上下文。 從 Jinja 2.2 開始,你可以顯式地指定在塊中可用的變量,只需在塊聲明中添加?scoped?修飾,就把塊設定到作用域中: ~~~ {% for item in seq %} <li>{% block loop_item scoped %}{{ item }}{% endblock %}</li> {% endfor %} ~~~ 當覆蓋一個塊時,不需要提供?scoped?修飾。 ### 模板對象[](http://docs.jinkan.org/docs/jinja2/templates.html#id15 "Permalink to this headline") Changed in version 2.4. 當一個模板對象被傳遞到模板上下文,你也可以從那個對象繼承。假設調用 代碼傳遞layout_template?布局模板到環境,這段代碼會工作: ~~~ {% extends layout_template %} ~~~ 之前?layout_template?變量一定是布局模板文件名的字符串才能工作。
                  <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>

                              哎呀哎呀视频在线观看