django內建的模板引擎包含模板上下文(模板變數),標籤,過濾器
模板上下文(模板變數):變數值有檢視函式或檢視類傳遞所得
標籤:對變數進行控制輸出,例如判斷和迴圈控制等
過濾器:多變數進行操作處理。
}
#variable1='字串或整型'
#variable2=
#variable3=['元組或列表']}}
#屬性}
#索引
django內建模板標籤:
:判斷標籤,對上下文進行條件判斷
:迴圈標籤,遍歷輸出上下文的內容
防跨站請求偽造攻擊
:將上下文重寫命名
:載入匯入django標籤庫
:讀取靜態資源的檔案內容
:繼承***模板
:重寫父類模板的**
#for 標籤
}#if 標籤}}
}#url 標籤
#生成不帶變數的url位址
"">首頁<
/a>
#生成帶變數的url位址
"">第一頁<
/a>
#with 標籤
}#load 標籤
#匯入靜態檔案標籤庫staticfiles
#static 標籤
#來自靜態檔案標籤庫staticfiles
forloop物件的使用
這是第一次迴圈<
/span>
這是最後一次迴圈<
/span>
本次迴圈次數為:
}<
/span>
自定義模板標籤:
(1)在專案根目錄下建立新的資料夾(mydefined)
(2)在該資料夾下建立初始化檔案__init__.py和templatetags資料夾。必須以templatetags命名
(3)在templatetags資料夾下建立初始化檔案__init__.py和自定義標籤檔案mytag.py
......
'django.contrib.staticfiles',
'index',
'mydefined',]
(5)在專案mytag.py檔案裡自定義標籤(reversal)
(6)在模板檔案中使用自定義標籤
#匯入自定義標籤檔案mytags
#頁面顯示ognajd
通過模板標籤實現,將多個模板檔案的共同**集中在乙個新的模板檔案中,在各個模板中呼叫該模板
使用:(1)在tempaltes 資料夾建立base.html檔案,作為公用模板
(2)在其他模板中呼叫
#宣告呼叫公用模板
首頁
}
過濾器支援多個過濾器同時使用
過濾器支援傳入引數,過濾器與引數用冒號隔開但不能有空格
}
自定義過濾器:
(1)在專案根目錄下建立新的資料夾(mydefined)
(2)在該資料夾下建立初始化檔案__init__.py和templatetags資料夾。必須以templatetags命名
(3)在templatetags資料夾下建立初始化檔案__init__.py和自定義過濾器檔案myfilter.py
......
'django.contrib.staticfiles',
'index',
'mydefined',]
(5)在專案myfilter.py檔案裡自定義過濾器(replace)
(6)在模板檔案中使用自定義過濾器
#匯入自定義過濾器檔案myfilter
替換前:}
替換後:}
頁面顯示將python替換為django
安裝
pip install jinja2
校驗(python互動式命令列)
import jinja2
jinja2.version
配置:(1)在專案資料夾新建jinja2.py檔案。(與settings.py在同級目錄下)
(2)在jinja2檔案中定義函式environment,並在函式裡使用jinja2的類environment進行例項化,例項化物件env用於對接django的執行環境
#jinja2.py
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse
from jinja2 import environment
defenvironment
(**options)
: env=environment(
**options)
env.
globals
.update(
)return env
(3)將jinja2.py檔案定義的函式environment寫到配置檔案settings.py中。
以下配置模板資料夾templates的所有模板檔案都是有jianja2模板引擎執行解析處理
django內建的功能使用django模板引擎
templates =
[#使用django模板引擎,}
,#使用jinja2模板引擎,}
,]
jinja2與django的區別在於static函式,url函式,過濾器的使用
#static標籤
#django的用法
#jinja2的用法:
}#上下文使用
#django的用法
}#jinja2的用法
}#使用過濾器
}<
/div>
#}key is
}<
/div>
value is
}<
/div>
this is
if<
/div>
this is
else
<
/div>
#}"}">首頁<
/a>
在jinja2.py檔案裡定義函式myreplace,並將函式註冊到jinja2的環境函式environment裡。完成過濾器的自定義
#jinja2.py
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse
from jinja2 import environment
defmyreplace
(value, old=
'jinja2'
, new=
'django'):
return
str(value)
.replace(old, new)
# 將jinja2模版設定到專案環境
defenvironment
(**options)
: env = environment(
**options)
env.
globals
.update(
) env.filters[
'myreplace'
]= myreplace
return env
參考書籍《django web應用開發實戰》 c 第六章 模板
1 函式模板 template t add t a,t b return a b 隱式呼叫 add 5,6 顯示呼叫 add 5,6 模板之間可以構成過載,模板與普通函式之間也可構成過載,呼叫順序如下 跟某一普通的引數完全匹配,呼叫之,跟函式模板的引數可以完全匹配 隱式呼叫 呼叫之,跟函式模按引數不...
mysql第六章 第六章 mysql日誌
第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...
深入解析ATL第六章筆記
1 多重繼承之傳遞夾層 由於c 的語法不能在派生類中區分來自不同基類,但原型一致的方法,所以類似的 是不合法的 class cacepowerll public icowboy,public iartist 若要在com類中實現來自不同介面但原型一致的方法,則可借助傳遞夾層 struct iarti...