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然後再模板中,先導入自己定義的myfilters檔案,然後取值:template
register =template.library()
@register.filter #如果後面有name引數:@register.filter(name='sb'),
#就相當於給add_sb的過濾器起了個別名,那麼在模板中使用的時候,就要用sb這個別名。
defadd_sb(value,arg):
return
'{}_{}_sb
'.format(value,arg)
} #@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...