Django第六天
1.模板層
模版語法重點:
變數:{{ 變數名 }}
1 深度查詢 用句點符
2 過濾器
標籤:{{% % }}
2.過濾器
{{ 第一個引數 | 過濾器名字:第二個引數 }}
{{ name | default:'資料為空‘}}None變數可以為空
{{ person_list | default:length }}計算長度,只有一個引數,對字串和列表都有效
{{ 1024 | filesizeformat:}}計算檔案大小
{{ 'hello world lqz' | slice:''2:-1'' }}2表示從前面取,-1從後面取不到
{{ value | date:''Y-m-d''}}
{{ X |add:''-2'' }}可以字串數字之間的加
{{ value |truncatechars:''4''}}如果字串字元多於指定的字元數量,那麼會被截斷。截斷的字串將以可翻譯的省略號序列(“...”)結尾。
{{ value |truncatewords:''4''}}截斷文字
{{ value |safe }}django模板會對html,js等語法自動轉義,用safe過濾器不會轉義,會解析這些語法。
3.標籤
標籤看起來像是這樣的: {% tag %}
。標籤比變數更加複雜:一些在輸出中建立文字,一些通過迴圈或邏輯來控制流程,一些載入其後的變數將使用到的額外資訊到模版中。一些標籤需要開始和結束標籤 (例如{% tag %} ...
FOR標籤:遍歷每一個元素:
{% for person in person_list %} <p>{{ person.name }}</p> {% endfor %}
可以利用{% for obj in list reversed %}反向完成迴圈。
遍歷一個字典:
{% for key,val in dic.items %} <p>{{ key }}:{{ val }}</p> {% endfor %}
注:迴圈序號可以通過{{forloop}}顯示
forloop.counter The current iteration of the loop (1-indexed) 當前迴圈的索引值(從1開始) forloop.counter0 The current iteration of the loop (0-indexed) 當前迴圈的索引值(從0開始) forloop.revcounter The number of iterations from the end of the loop (1-indexed) 當前迴圈的倒序索引值(從1開始) forloop.revcounter0 The number of iterations from the end of the loop (0-indexed) 當前迴圈的倒序索引值(從0開始) forloop.first True if this is the first time through the loop 當前迴圈是不是第一次迴圈(布林值) forloop.last True if this is the last time through the loop 當前迴圈是不是最後一次迴圈(布林值)forloop.parentloop 本層迴圈的外層迴圈
for ... empty
for 標籤帶有一個可選的{% empty %} 從句,以便在給出的組是空的或者沒有被找到時,可以有所操作。
{% for person in person_list %} <p>{{ person.name }}</p> {% empty %} <p>sorry,no person here</p> {% endfor %}
if 標籤
{% if %}會對一個變數求值,如果它的值是“True”(存在、不為空、且不是boolean型別的false值),對應的內容塊會輸出。
{% if num > 100 or num < 0 %} <p>無效</p> {% elif num > 80 and num < 100 %} <p>優秀</p> {% else %} <p>湊活吧</p> {% endif %}
if語句支援 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判斷。
with
使用一個簡單地名字快取一個複雜的變數,當你需要使用一個“昂貴的”方法(比如訪問資料庫)很多次的時候是非常有用的
例如:
{% with total=business.employees.count %} {{ total }} employee{{ total|pluralize }} {% endwith %}