1 模板的組成
HTML代碼+邏輯控制代碼熔脂。
2 邏輯控制代碼的組成
邏輯控制代碼類型 | 使用方法 |
---|---|
變量(使用雙大括號來引用變量 ) | {{ var_name }} |
標簽(tag)的使用(使用大括號和百分號的組成來表示使用tag ) | {% load staticfiles %} |
過濾器(filter)的使用 | {{ ship_date | date:"F j, Y" }}坷随,ship_date變量傳給data過濾器,data過濾器通過使用"F j, Y"這幾個參數(shù)來格式化日期數(shù)據(jù)踊餐。"|"代表類似Unix命令中的管道操作。 |
2.1 常用標簽(tag)
標簽 | 說明 |
---|---|
{% if %} | 可以使用and, or, not來組織你的邏輯棉钧。但不允許and和or同時出現(xiàn)的條件語句中疯汁。新版本中已經(jīng)支持{% elif %}這樣的用法。 |
{% ifequal %}和{% ifnotequal %} | 比較是否相等地来,只限于簡單的類型戳玫,比如字符串,整數(shù)未斑,小數(shù)的比較咕宿,列表,字典蜡秽,元組不支持府阀。 |
{% for %} | 用來循環(huán)一個list,還可以使用resersed關(guān)鍵字來進行倒序遍歷载城,一般可以用if語句來先判斷一下列表是否為空,再進行遍歷费就;還可以使用empty關(guān)鍵字來進行為空時候的跳轉(zhuǎn)诉瓦。 |
{% cycle %} | 在循環(huán)時輪流使用給定的字符串列表中的值。 |
{# #} | 單行注釋 |
{% comment %} | 多行注釋 |
{% csrf_token %} | 生成csrf_token的標簽力细,用于防止跨站攻擊驗證睬澡。 |
{% debug %} | 調(diào)用調(diào)試信息 |
{% filter %} | 將filter 標簽圈定的內(nèi)容執(zhí)行過濾器操作。 |
{% autoescape %} | 自動轉(zhuǎn)義設(shè)置 |
{% firstof %} | 輸出第一個值不等于False的變量 |
{% load %} | 加載標簽庫 |
{% now %} | 獲取當前時間 |
{% spaceless %} | 移除空格 |
{% url %} | 引入路由配置的地址 |
{% verbatim %} | 禁止render |
{% with %} | 用更簡單的變量名緩存復雜的變量名 |
2.2 常用過濾器(filter)
過濾器 | 作用 |
---|---|
add | 給變量加上響應的值 |
addslashes | 給變量中的引號前加上斜線 |
capfirst | 首字母大寫 |
cut | 從字符串中移除指定的字符 |
date | 格式化日期字符串 |
default | 如果值是False眠蚂,就替換成設(shè)置的默認值煞聪,否則就使用本來的值 |
default_if_none | 如果值是None,就替換成設(shè)置的默認值逝慧,否則就使用本來的值 |
dictsort | 按照設(shè)定參數(shù)(key)對應的value對列表進行排序 |
dictsortreversed | 和上面恰好相反 |
divisibleby | 是否能夠被某個數(shù)字整除昔脯,是的話返回True啄糙,否則返回False |
escape | 對字符串進行轉(zhuǎn)義 |
escapejs | 替換value中的某些字符,以適應JAVASCRIPT和JSON格式 |
filesizeformat | 格式化文件大小顯示 |
first | 返回列表中的第一個值 |
last | 返回列表中最后一個值 |
floatformat | 格式化浮點數(shù) |
length | 求字符串或者列表長度 |
length_is | 比較字符串或者列表的長度 |
urlencode | 對URL進行編碼處理 |
upper\lower | 大寫\小寫 |
safe | 對某個變量關(guān)閉自動轉(zhuǎn)義 |
slice | 切片操作 |
time | 格式化時間 |
timesince | 格式化時間 (e.g., “4 days, 6 hours”). |
truncatechars | 按照字符截取字符串 |
truncatewords | 按照單詞截取字符串 |
striptags | 過濾掉html標簽 |
3 模板包含和繼承
3.1 概念
- 包含
{% include %} 允許在模板中包含其它模板的內(nèi)容云稚。
標簽的參數(shù)可以是:模板名稱 隧饼、變量、字符串静陈。
{% include 'nav.html' %}
{% include 'app/nav.html' %}
{% include template_name %}
還可以在包含的時候傳遞變量燕雁。
- 繼承:
本質(zhì)上說:模板繼承就是先構(gòu)造一個基礎(chǔ)框架模板,而后在其子模板中對它所包含站點共用部分和定義進行重載鲸拥。
1拐格、定義塊:{% block %}
2、繼承父模板{% extends %}
3.2 注意事項
- 包含和繼承可以把一些共用的網(wǎng)頁模塊獨立出來刑赶,以減少代碼的冗余捏浊。
- 如果在模板里使用{% extends %}的話,這個標簽必須在所有模板標簽的最前面角撞,否則模板繼承不工作
- 通常盡可能模板里的{% block %}越多越好呛伴,子模板不必定義所有的父block
- 如果你需要得到父模板的塊內(nèi)容,{{ block.super }}變量可以幫你完成工作
當你需要給父塊添加內(nèi)容而不是取代它的時候這就很有用 - 不能在同一模板里定義多個同名的{% block %}谒所,因為塊標簽同時在兩個地方工作热康,不僅僅在子模板中,而且在父模板中也填充內(nèi)容劣领,如果子模板有兩個同名的標簽姐军,父模板將不能決定使用哪個塊內(nèi)容來使用
4 參考鏈接
Django 1.9:官方文檔
Django 1.9:官方文檔 - 包含
Django 1.9:官方文檔 - 模塊
Django 1.9:官方文檔 - 繼承
Django 1.82:中文翻譯文檔【僅供參考】