1. 程式人生 > >Python學習筆記-Day61和Day62-Django模板系統

Python學習筆記-Day61和Day62-Django模板系統

主要內容:

一、模板語言-變數

二、模板語言-過濾器

三、模板語言Tags

四、csrf-token

五、母板

六、元件

七、靜態檔案相關

八、自定義tag

 

 

一、Django模板語言-變數

1、語法:{{ 變數名 }}

2、命名規則:所有的數字、字母、下劃線的自由組合

3、點(.)的作用

  ① 字典查詢  {{ dic.key }}

  ② 屬性、方法查詢  {{ obj.name }}

  ③ 索引查詢  {{ list1.0 }}

 

二、Django模板語言-過濾器filter

過濾器的作用是改變變數的顯示

1、語法:{{ 變數|filter_name:'引數' }}

  ① 過濾器支援鏈式操作,一個過濾器的輸出可以作為另一個過濾器的輸入

  ② 過濾器可以要接收引數

  ③ 過濾器中的引數是空格的話要用引號包起來

  ④ 管道符|左右兩邊沒有空格

2、Django中提供的內建的過濾器大概有60多中,列舉以下幾種

① default

如果一個變數是false或空,就設定成預設的值

{{ value|default:"nothing" }}

② length

返回變數的長度,作用於字串和列表

{{ value|length }}

③ filesizeformat

將值格式化成一個“人類可讀”的檔案尺寸

{{ value|filesizeformat }}

如果value的值是123456789,輸出的將是117.7MB

④ slice

切片,和python中的切片是一樣的,顧頭不顧尾

{{ value|slice:"1:-1"}}

⑤ date       ******

格式化時間

將一個datetime格式的時間格式化成我們想要的格式

{{ now|date:"Y-m-d H:i:s"}}

⑥ safe

為了安全,Django的模板中會對HTML標籤和JS等語法標籤自動轉義成普通的字串。

但有時,我們不需要這些字串被轉義,就可以通過safe過濾器告訴Django這段程式碼是安全的不需要轉義

value = ‘<a href="#">點我</a>’

{{ value|safe }}

⑦ truncatechars

如果字串中的字元多於指定的數量,那麼會被截斷,截斷的字元將以可翻譯的省略號序列(...)結尾,每個省略號代表一個字元

{{ value|truncatechars:9}}   # 包括三個省略號在內,保留9個字元

⑧ truncatewords

按照空格進行截斷,因為中文不以空格作為單詞的分割,所以這個過濾器對中文沒有什麼用處

被截斷的部分會以省略號(...)結尾

⑨ cut

移除掉指定的字元

{{ value|cut:'a'}}

移除掉value中的a字元

⑩ join

使用字串連線列表,和python中的join一樣

{{ list|join:'&'}}

⒒ timesince

{{ 以前的時間|timesince:之後的時間}}

計算之前的時間和之後的時間的時間差,如果引數省略,就是計算以前的時間和現在的時間差

最小的單位是分鐘,如果以前的時間>之後的時間,返回“0分鐘”

⒓ timeutil

{{ 以後的時間|timeutil:之前的時間}}

於timesince類似,計算以後的時間和之前的時間差

 

三、自定義過濾器

自定義過濾器只是一個帶一個或兩個引數的Python函式

例如過濾器{{ value|foo:"bar" }}是將value和bar作為引數傳遞給foo,bar這個引數可以省略

1、自定義filter的步驟

① 在app下新建一個Python package 名叫templatetags(一定要叫這個名)

② 在templatetags下新建一個py檔案(名字隨便取)my_filter.py

③ 在py檔案中寫函式,實現自定義的filter功能

④ 告訴Django框架多了一個自定義的filter

  from django import template

  register = template.Library()

  @register.filter(name='呼叫時使用的filter名字,可以和函式名不一樣')

  def cut(value,arg):

    return value.replace(arg, '')

2、使用自定義的filter

① 在HTML檔案中匯入py檔案

{% load my_filter %}

② 重啟Django專案

③ 按照普通的使用filter的方法呼叫

 

四、Tags(for、if、with)

1、for迴圈

① 普通的for迴圈

{% for user in user_list %}

{% endfor %}

for迴圈可用的一些引數 

 forloop.counter