1. 程式人生 > >Django第六天

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 %} ...

標籤 內容 ... {% endtag %})。

 

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 %}