django 模版標籤筆記

2022-07-20 11:24:12 字數 2570 閱讀 5181

一、模板變數筆記:

1、在模版中使用變數,需要將變數放到『}』中。'}'

2、如果想訪問物件的屬性,可以通過'物件.屬性名'的方式訪問

3、如果想要訪問乙個字典的key對應的value,那麼只能通過'字典.key'

4、因為在訪問字典的'key'時候也用『.』來訪問,因此不能在字典中定義本身就有的屬性名當做『key』,否則字典的那個屬性將為程式設計字典中的key了

5、如果想要訪問列表或者元組,那麼也是通過『.』的方式訪問,不用通過''的方式訪問。

二、前端模板中的for迴圈

1、'if'標籤:if標籤相當於『python』中的if語句,有'elif'和'else'相對應,但是所有的標籤都需要用標籤符號('')進行包裹。if標籤中可以使用'=='、!=、<、>、<=、>=、in、not in、is、is not'等判斷運算子。等判斷運算子。

2、'for ... in ...'標籤:用法和python中的一樣,可以遍歷列表、元組、字串、字典等一切可以遍歷的物件。

如果想要反向遍歷,那麼在遍歷的時候加上'reversed'。例項**:

} } p

3、遍歷字典:例項**:

}:}

4、在for迴圈中提供了一些引數:

<1> forloop.counter:當前迴圈的下標。以1作為起始值。

<2> forloop.counter0:當前迴圈的下標。以0作為起始值。

<3> forloop.revcounter:當前迴圈的反向下標值。比如列表有10個元素,那麼第一次遍歷這個屬性是等於10,第二次是9,以此類推。並且是以1作為最後乙個元素的下標。

<4> forloop.revcounter0:與forloop.revcounter類似,只不過最後乙個元素的下標是0.

<5> forloop.first:是否為第一次遍歷,適用於針對第一行設定不同時使用。

<6> forloop.last:是否為最後一次遍歷,適用於針對最後一行設定不同時使用。

<7> forloop.parentloop:如果有多個迴圈巢狀,那麼這個屬性代表的是上一級的for迴圈。

5、for...in...empty:這個使用跟for...in...一樣,其不同之處是,在遍歷物件時,如果沒有元素的情況下,會執行'empty'中的內容。示例**:

} 暫時沒有學生

三、前端模版中使用with標籤

在模版中定義變數。有時候乙個變數訪問的時候比較複雜,那麼可以先把這個複雜的變數快取到乙個變數上,以後直接使用這個變數就可以了。

1     context =

45 6}

7

在使用with標籤時需要注意:

1、在with語句中定義的變數,只能在中使用,不能在這個標籤外使用。

2、定義變數的時候,不能在等號左右兩邊留空格。比如是錯誤的。

3、還有另外一種寫法同樣也是支援的:

1         2}

3

四、url標籤

在模版中,我們經常要寫一些'url',當我們直接在頁面裡使用硬編碼寫死這個'url'時,後期維護起來成本是很高的。這時可以使用url標籤。用法類似於django中的'reverse'。

"

'">圖書列表頁

如果需要傳遞引數到後端時怎麼辦?這時可以使用位置引數或者關鍵字引數。記住,兩者不能同時使用,且在有多個引數時,使用空格進行分割,不要使用','。

#

path部分

path('

detail///

', views.book_detail, name='

detail')

#前端使用url反轉,使用位置引數"'

">圖書詳情頁

#前端使用url反轉,使用關鍵字引數"'

">圖書詳情頁

五、spaceless標籤:移除html標籤中的空白字元,包括空格、tab鍵、換行等。示例**如下:

1     23

'foo/

' >foo

45

渲染後:

'

foo/

' >foo

spaceless只會移除html標籤之間的空白字元。而不會移除標籤與文字之間的空白字元。例如:

不會壓縮

這時是不會壓縮span標籤裡的。

六、autoescape標籤

開啟或關閉這個標籤內元素的自動轉義功能。自動轉義是可以將一些特殊字元轉義成html語法能識別的字元。比如《會被轉義成<,而》會被轉義成》。模版中預設是開啟了自動轉義的。例項**如下:

1

#傳遞的上下文資訊

2 context =5#

模版中關閉自動轉義

6 7}

8

七、verbatim標籤:缺省會在前端模版中解析那些特殊字元,比如以及

2 }

3

django 模版系統 標籤的自定義

為了自定義乙個模版標籤,你要告訴django遇到這個標籤的時候該怎麼辦。當django編譯乙個模版時,它將原來的模版分成乙個個節點 node 每個節點都是django.template.node的乙個例項,並且具備render 方法,於是,乙個已編譯的模版就是節點物件的乙個列表,例如 hello,b...

Django模版高階

coding utf 8 from django.shortcuts import render def home request string 測試 return render request,index.html 我們在函式當中把字串名稱為string到index.html檔案,在模版中這樣使用...

Django 自定義模版標籤和過濾器

2 編寫自定義過濾器 test filter.py usr bin env python coding utf 8 from django import template from utils.timebefore import timebefore register template.librar...