Django模板系統(templates)
模板語言
常用語法
兩種特殊符號{ {} }、{%%},變量相關用{ {} },邏輯相關用{%%}
變量
{變量名}
變量名由字母數字和下劃線組成
點(.)在模板語言中有特殊含義,用來獲取對象的相應屬性值
模板中支持的寫法:
{#取1中的第一個參數#} {{1.0}}
{#取字典中key的值#} {{d.name}}
{#取對象的name屬性#} {{person_list.0.name}}
{#操作只能調用不帶參數的方法#} {{person_list.0.dream}}
內置Filters
法:{{value|filter_name:參數}}
default
{{value:default:‘nothing’}} 如果value值沒傳的話就顯示nothing
length
{{value|length}} 返回value的長度,如value=[a,b,c,d]的話,就顯示4。(‘|’左右兩邊沒有空格)
filesizeformat
將值格式化“一個人類可讀”的文件尺寸(例如,13kb,4.1M,202bytes等)
{{123456789|filesizeformat}} 輸出117.7MB
slice 切片
{{value|slice:“2:-1”}}
date 格式化
{{value|date:“Y-m-d H:i:s”}}
safe
Django的模板中會對HTML標簽和JS等語法標簽進行自動轉義,原因是為了安全。但有時候我們不希望有一些HTML標簽被轉義,比如做一個內容管理系統,後臺添加的文章中是經過裝飾的
這些裝飾可能是通過一個類似於FCKedirtor編輯加註了HTML裝飾符的文本,如果自動轉義的話顯示的就是保護HTML標簽的源文件。為了在Django中關閉HTML的自動轉義有兩種方式,如果
是一個單獨的變量我們可以通過過濾器“|safe”的方式告訴Django這段代碼是安全的不必轉義。
truncatechars
如果字符串字符多於指定的字符數量,那麽會被截斷。截斷的字符串將以可翻譯的省略號系列(“...”)結尾
參數:截斷的字符串
{{value|truncatechars:9}}
自定義Filter
自定義過濾器只是帶有一個或兩個參數的Python函數:
變量(輸入)的值——不一定是一個字符串
參數的值-這可以有一個默認值,或者完全省略
for循環
<ul>
{ %for user in user-list% }
<li>{{user.name}}</li>
{ %endfor% }
</ul>
for循環可用的一些參數
if,elif,else
if語句支持and、or、==、>、<、!=、<=、>=、in、not in、is、is not判斷
with
定義一個中間變量
csrf_token
這個標簽用於跨站請求偽造保護
在頁面的form表單裏面寫上{%csrf_token%}
註釋
母版 我們通常會在母版中定義頁面專用的JS塊、CSS塊,方便子頁面替換
繼承母版 在子頁面中在頁面最上方使用下面的語法來繼承母版
{%extends ‘layouts.html%’}
塊(block)
通過在母版中使用{%block XXX%}來定義“塊”
在子頁面中通過定義母版中的block名來對應替換母版中相應的內容
組件
可以將常用的頁面內容如導航條,頁面信息等組件保存在單獨的文件中,然後在需要使用的地方按如下語法導入即可
{%include‘navbar.html’%}
靜態文件相關
{%load static%}
<img src="{%static "mytest.js"%}"alt="Hi!"/>
引用JS文件時使用:
{%load static%}
<script src="{%static "mytest.js"%}"></script>
某個文件多處被用到可以存為一個變量
{%load static%}
{%static “images/hi.jpg” as myphoto%}
<img src="{{myphoto}}"></img>
使用get_static_prefix
{%load static%}
<img src="{%get_static_prefix%}images/hi.jpg"alt="hi!"/>
inclution_tag多用於返回html代碼片段
Django模板系統(templates)