模板

{%標識符%}html

{{變量}}架構

咱們能夠在 html 網頁中, 穿插這些內容.框架

過濾器, 用來制定輸出格式 {{ship_date|date:"F j, Y"}}, 過濾器是用管道符實現網站

調用模板的對象是 render 方法編碼

{% include model_name %}, 該標籤容許在(模板中) 包含其餘模板的內容. model_name: 能夠是一個變量, 也能夠是用單/雙引號硬編碼的字符串. 每當在多個模板中出現多個相同的代碼時, 就該考慮用這個來減小重複.htm

例如: {% include 'nav.html' %}對象

其中, nav.html 模板名稱會去判斷 TEMPLAGE_DIRS 的模板目錄(根據版本的不一樣, 可能須要考慮目錄)blog

模板繼承

看來比{% include %} 更好繼承

模板繼承就是先構造一個基礎框架模板, 然後在其子模板中對它所包含站點公用部分和定義塊進行重載.模板引擎

頭和腳, 用 {% include %} 搞定很簡單, 麻煩的是中間部分, 例如

每一個頁面中都有一個 <h1>helpful timestamp site</h1>標題, 可是這個標題不能放在header.html(include)中, 由於每一個頁面的<title>不同, 若是咱們將<h1>包含在頭部, 咱們就不得不包含<title>, 但這樣又不容許在每一個頁面對它進行定製, 怎麼辦呢?

模板繼承,能幫咱們解決上面的問題, 你能夠對那些不一樣的代碼段進行定義, 而不是共同的代碼段.

step1: 定義基礎模板, 該架構將由子模板所繼承, 例如:

{% block %}{% endblock %} 成對出現

這個叫作 base.html, 定義了一個簡單的HTML框架文檔, 咱們將在本站點的全部頁面中使用. 子模板的做用是重載, 添加和保留那些內容. 保存這個文件到你的 templage目錄下, 名字爲base.html

咱們使用了一個 {% block %} 標籤, 全部的 {% block %} 標籤告訴模板引擎, 子模板能夠重載這些內容.

如今咱們已經有了一個 base.html, 接下來, 咱們要建立一個 current_datetime.html 模板來使用它:

若是想對網站基礎部分進行修改, 那麼, 只須要修改 base.html 就能夠了.

若是在模板中使用 {% extends %}, 必須保證其爲模板中的第一個模板標記, 不然, 模板繼承將不起做用.

通常來講, 基礎模板中的{% block %}標籤越多越好, 記住, 子模板沒必要定義父模板中全部的代碼塊, 所以你能夠合理的缺省值來對一些代碼進行填充.

若是發覺本身在多模板之間拷貝代碼, 應該考慮放置到父模板的某個{% block %}中.

若是你須要訪問父模板中的塊的內容, 使用 {{block.super}}這個標籤. 這個變量將會表如今父模板的內容中, 若是隻想在上級代碼基礎上添加內容, 而不是所有重載, 該變量就顯得很是有用了.

不容許在同一模板中, 定義多個同名 {% block %}

相關文章
相關標籤/搜索