include
標籤容許在模板中包含其它的模板的內容。 標籤的參數是所要包含的模板名稱,能夠是一個變量,也能夠是用單/雙引號硬編碼的字符串。 每當在多個模板中出現相同的代碼時,就應該考慮是否要使用 {% include %}
來減小重複 <br>html
假設咱們在多個 HTML 模板中都須要用到顯示用戶自定義的 HTML 片斷,顯示的方式是一個標題加上須要顯示的具體內容。 下面的這個模板文件 html-section.html
就知足了基本的需求,咱們能夠在不一樣的 HTML 模板中引入這個子模版。 include
後面可使用字符串或者變量名來指定模板路徑編碼
<div class="section-title"> <span>{{title}}</span> </div> <div class="section-content"> <div id="{{section_id}}">{% autoescape off %}{{content | default:''}}{% endautoescape %}</div> </div>
在各個父模板中就可使用 include
指令來引入這個子模版。 因爲默認狀況下子模版能夠訪問復模版中的變量,子模版能夠正常顯示指定的 HTML 內容。spa
{% include 'html-section.html' %}
<br>.net
若是須要在一個網頁屢次引入同一個子模版,上面的方式就會出現問題。 由於在子模版中咱們指定了變量名稱,這個時候咱們可使用 with
關鍵字給子模版指定變量code
{% include 'html-section.html' with title="Summary" content=article_summary section_id="article-summary" %} {% include 'html-section.html' with title="Article Body" content=article_body section_id="article-body" %} {% include 'html-section.html' with title="Contact US" content=article_footer section_id="article-contact" %}
設想一下這樣的場景:一個 HTML 頁面中屢次引入了一個子模版,其中部分 include
語句須要作一些定製。<br> 好比說在變量後面加入固定的文字。<br> 固然能夠經過修改子模版知足任意的定製化需求。但若是僅僅只是變量上的改變, 修改子模版就顯得太繁瑣。<br> 而 with
關鍵字能夠在不改變子模版的前提下,使用過濾器來修改變量的值htm
<br> 假如咱們須要將上面的子模版作如下的修改:blog
在不改變子模版的前提下,咱們能夠將 include 語句作如下的修改字符串
{% include 'html-section.html' with title=content|truncatewords:1|add:' Section'|capfirst content=article_footer section_id="article-contact" %}
with
指定的變量默認狀況下子模版能夠訪問父模板的全部變量,在 Django 中還能夠經過使用 only
選項來阻止這個默認行爲get
{% include "html-section.html" with title="Summary" content=article_summary section_id="article-summary" only %}
<br>it
另外 Django 還提供了單獨的 with
標籤來修改或者指定變量的值。 能夠單獨使用,也能夠搭配 include
標籤使用。使用方法以下:
<!-- 使用 with 標籤指定變量 --> {% with title="summary" content=article_body|capfirst section_id="article-body" %} {% include 'html-section.html' %} {% endwith %} <!-- 使用 with as --> {% with content|truncatewords:1|capfirst as title %} {% include 'html-section.html'%} {% endwith %}
<br><br> 轉載請註明出處: zf-l