Django 學習日記 - Templates - setp10

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 給變量加上響應(yīng)的值
addslashes 給變量中的引號前加上斜線
capfirst 首字母大寫
cut 從字符串中移除指定的字符
date 格式化日期字符串
default 如果值是False,就替換成設(shè)置的默認值,否則就使用本來的值
default_if_none 如果值是None,就替換成設(shè)置的默認值,否則就使用本來的值
dictsort 按照設(shè)定參數(shù)(key)對應(yīng)的value對列表進行排序
dictsortreversed 和上面恰好相反
divisibleby 是否能夠被某個數(shù)字整除,是的話返回True,否則返回False
escape 對字符串進行轉(zhuǎn)義
escapejs 替換value中的某些字符,以適應(yīng)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 注意事項

  1. 包含和繼承可以把一些共用的網(wǎng)頁模塊獨立出來,以減少代碼的冗余。
  2. 如果在模板里使用{% extends %}的話,這個標簽必須在所有模板標簽的最前面,否則模板繼承不工作
  3. 通常盡可能模板里的{% block %}越多越好,子模板不必定義所有的父block
  4. 如果你需要得到父模板的塊內(nèi)容,{{ block.super }}變量可以幫你完成工作
    當你需要給父塊添加內(nèi)容而不是取代它的時候這就很有用
  5. 不能在同一模板里定義多個同名的{% block %},因為塊標簽同時在兩個地方工作,不僅僅在子模板中,而且在父模板中也填充內(nèi)容,如果子模板有兩個同名的標簽,父模板將不能決定使用哪個塊內(nèi)容來使用

4 參考鏈接

Django 1.9:官方文檔
Django 1.9:官方文檔 - 包含
Django 1.9:官方文檔 - 模塊
Django 1.9:官方文檔 - 繼承
Django 1.82:中文翻譯文檔【僅供參考】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容