django框架之模板系統

2022-08-20 15:57:13 字數 4314 閱讀 5711

mvc框架

mvc,全名是model view controller,是軟體工程中的一種軟體架構模式,把軟體系統分為三個基本部分:模型(model)、檢視(view)和控制器(controller),具有耦合性低、重用性高、生命週期成本低等優點。

mtv框架:

model(模型):負責業務物件與資料庫的物件(orm)

template(模版):負責如何把頁面展示給使用者

view(檢視):負責業務邏輯,並在適當的時候呼叫model和template

django模板中只需要記兩種特殊符號:

}和 }表示變數,在模板渲染的時候替換成值,表示邏輯相關的操作

}變數名由字母數字和下劃線組成。

點(.)在模板語言中有特殊的含義,用來獲取物件的相應屬性值。

舉例:view中的**:

def

test(request):

name = '

alex

'age = 83name_list = ['

和尚','

阿三','

阿瑟東','獨家'

]

return render(request,'

test.html

',)

模板中的**:

}}}

}}}}

列表中的名字可以通過for迴圈取出,也可以用 . 索引 取出。

字典中的名字是通過  . key  取出 ,也可以通過for迴圈取

例子:views中的**:

name_dict =
模板html的**:

}}}

}}}:}

也可以將類渲染到模板中,類的取值可以通過呼叫 類.屬性名或方法名 來獲取值。例子:

views中的**:

class

person(object):

def__init__

(self,name,age):

self.name =name

self.age =age

def__str__

(self):

return''

.format(self.name)

defdream(self):

return

'{}我想帶你去浪漫的西二旗,然後一起去上地做面試題,其實我比較喜歡望京西

'.format(self.name)

def __repr__(self):

return ''.format(self.name)

deftest(request):

p1 = person('

alex

',22)

p2 = person('

qwer

',25)

return render(request,'

test.html

',)

模板中的**:

}}}

}}

這裡插入乙個小知識:

class中 __init__方法和__repr__方法的區別:

如果是直接呼叫類中的屬性或方法,則用的是__init__方法,如果是程式呼叫類中的屬性或方法,就用的是__repr__方法,上述**中,如果將p1,p2放在列表中,通過p_list列表呼叫類的屬性或方法,就呼叫的是__repr__方法。在python2中__repr__的方法叫做__unicode__。

翻譯為過濾器,用來修改變數的顯示結果。

語法: }

'|'左右沒有空格沒有空格沒有空格

default

}

注:templates的options可以增加乙個選項:string_if_invalid:'找不到',可以替代default的的作用

例子:

}
filesizeformat將值格式化為乙個 「人類可讀的」 檔案尺寸 (例如 '13 kb', '4.1 mb', '102 bytes', 等等)。例如:views**:

file_size1 = 1024file_size2 = 1024*1024
模板中的**:

}

}

add給變數加引數  可是以實現數字加法,字串拼接,列表的拼接

}

value是數字4,則輸出結果為6。

}
如果first是 [1,.2,3] ,second是 [4,5,6] ,那輸出結果是 [1,2,3,4,5,6] 。

lower

小寫

}
upper大寫

}
title標題

}
ljust左對齊

"}"

rjust右對齊

"}"

center居中

"}"

length}返回value的長度,如 value=['a', 'b', 'c', 'd']的話,就顯示4.

slice

切片

}
first取第乙個元素

}
last取最後乙個元素

}
join使用字元竄拼接列表。同python的str.join(list)。 可以將列表拼接成字串

}

truncatechars如果字串字元多於指定的字元數量,那麼會被截斷。截斷的字串將以可翻譯的省略號序列(「...」)結尾。

引數:截斷的字元數

}
date日期格式化

view中的**:

import

datetime

date_now =datetime.datetime.now()

date_day = datetime.date()

print('

1111111

', date_now)

模板中的**:

}}}

如果不想再模板後面加引數可以現在setting中進行設定,

safe

views**:

value = "

點我"

模板中的**:

}

}

自定義過濾器只是帶有乙個或兩個引數的python函式:

例如,在過濾器}中,過濾器foo將傳遞變數var和引數「bar」

from django import

template

register =template.library()

@register.filter #如果後面有name引數:@register.filter(name='sb'),

#就相當於給add_sb的過濾器起了個別名,那麼在模板中使用的時候,就要用sb這個別名。

defadd_sb(value,arg):

return

'{}_{}_sb

'.format(value,arg)

然後再模板中,先導入自己定義的myfilters檔案,然後取值:

}   #@register.filter(name='sb')

使用name引數後,就應該寫成

#} #如果給arg賦上值,模板中就不需要寫引數了

Django模板系統

官方文件 只需要記兩種特殊符號 和 變數相關的用 邏輯相關的用。變數名由字母數字和下劃線組成。點 在模板語言中有特殊的含義,用來獲取物件的相應屬性值。幾個例子 view中 def template test request l 11,22,33 d class person object def i...

Django模板系統

如果在模板中需要解析變數使用 如果在模板中進行邏輯相關操作使用 注釋 單行注釋。在django的模板系統中變數使用的語法 當模版引擎遇到變數,就會用值替換掉變數。變數的命名可以是字母數字以及下劃線 的組合。變數名稱中不能有空格或標點符號。練習1 把html檔案中的 替換成 老王 html檔案 vie...

Django模板系統

匯入 template 和 context 類 from django.template import template,context def hello template request html 1.構建模板結構 template obj template html 2.建立渲染結構 cont...