Django學(xué)習(xí)筆記:模板層
模板配置
模板所在文件夾 <項(xiàng)目名>/templates
settings.py配置項(xiàng):
BACKEND:指定模板引擎
DIRS:模板的搜索目錄
APP_DIRS:是否要在應(yīng)用的templates文件夾中搜索模板文件
OPTIONS:有關(guān)模板的選項(xiàng)

模板的加載方式一

模板的加載方式二

模板的數(shù)據(jù)傳遞

當(dāng)然如果變量太多了,且傳遞給模板的是局部變量,可以直接傳遞locals(),這個(gè)方法會(huì)自動(dòng)把局部變量和值變成字典
變量語(yǔ)法:
{{變量名}}? ? ?
{{變量名.index}}? ? 列表 、元組等
{{變量名.key}}? ? ?字典
{{對(duì)象.方法}}? ? ? 得返回值
{{函數(shù)名}}? ? ? ? ???得返回值
標(biāo)簽語(yǔ)法:

if標(biāo)簽無(wú)法進(jìn)行多個(gè)條件的優(yōu)先級(jí)別識(shí)別
標(biāo)簽里面在使用變量的時(shí)候不再需要使用{{}}括起來(lái)


模板過(guò)濾器

django默認(rèn)開(kāi)啟了html轉(zhuǎn)移,比如說(shuō)對(duì)js代碼的字符串處理。而safe可以有保留js功能的作用
過(guò)濾器我在模板層面的語(yǔ)法,由模板引擎來(lái)解析,配合標(biāo)簽和變量使用可以完成基本的動(dòng)態(tài)展示的作用。
過(guò)濾器有點(diǎn)類(lèi)似于linux的管道
模板的繼承
子模板可以直接繼承父模板的內(nèi)容,并覆蓋父模板的內(nèi)容
1.一般在父模板中定義block塊? ?{% block block_name%}? 父模板內(nèi)容? {%endblock%}
2.在子模板中{% extends 'XXX.html'%}繼承父模板
{% block block_name%}? 覆蓋內(nèi)容? {%endblock%}
但是一定要注意的是,父模板的動(dòng)態(tài)數(shù)據(jù)不會(huì)被繼承!所以如果繼承了父模板,要對(duì)父模板的動(dòng)態(tài)數(shù)據(jù)做一個(gè)合適的重寫(xiě)
為了避免上面這個(gè)問(wèn)題,一般父模板都是靜態(tài)的。