django模板詳解 二

2021-09-20 09:25:21 字數 3186 閱讀 7626

1 總體結構

2 各個模組的互動關係

​ django收到http請求後,依次完成下列處理:

根據url通過urlconf模組對映到view函式,將httprequest物件作為引數傳入。

在view函式中,獲取http請求的引數,通過model訪問資料庫,進行業務邏輯運算得到輸出資料。

然後,載入template,根據輸出資料生成頁面,將httpresponse物件返回。

3 模板概述

#模板處理過程:

1. 模板載入

2. 模板渲染

#模板包含兩個部分:

3. 原始的html⻚⾯

4. 模板語法標記的內容(標記語言)

#模板引擎就是把模板語法標記的內容,替換成導⼊到模板引擎的資料

render(request, 模板名稱,傳遞給模板渲染的字典)

render返回的是httpresponse物件

render的中間結果就是⼀個字串,然後⽤該字串建立httpresponse物件

4 定義模板
(1)變數

語法:} }

字典查詢}

屬性與方法}

(2)標籤

語法: 標籤

格式:if語句

語句1語句2

格式:for語句

格式語句1

#當列表為空或不存在時執行語句2

語句2

(3)comment 多行注釋

注釋內容

多行注釋

(4)ifqual/ifnotequal 判斷是否相等

作用 : 判斷是否相等或者不相等

格式 : #如果值1=值2則執行

(5) 其他功能

include

作用 : 載入模板並以標籤內的引數渲染

格式 :

url作用反向解析格式 :

csrf_token作用: 用於跨站請求偽造保護

格式:

block/extends作用 : 用於模板的繼承

autoescape: 作用用於html的轉義

迴圈forloop常見的功能:

迴圈型別說明}

表示當前是第⼏次迴圈,從0數數

}表示當前是第⼏次迴圈,倒著數數,到1停

}表示當前第⼏次迴圈,倒著數,到0停

}布林值是否是最後⼀個 布林值

}是否是第⼀個

}表示當前是第⼏次迴圈,從1數數

#例子

data=

} }

5 過濾器
1 語法}作用

在變數被顯示前修改它

}2 過濾器可以傳遞引數,引數用引號引起

join

格式列表|join:'#'

} 列表資料以#號連線

3 如果乙個變數沒有被提供,或者值為false/空,可以使用預設值

default 格式}

例項} 沒有預設顯示沒有

4 根據給定格式轉換日期為字串

date格式}

5 html轉義

escape

6 加減乘除}}

}計算方法num/1*5

計算方法num/2*1

6 反向解析
#urls.py根路由

urlpatterns = [

]urlpatterns = [

url(r'^good/(\d+)/(\d+)/$',views.good,name='good'),

]#index.html

' '>

7 模板繼承
1 作用

模板繼承可以減少頁面的重複,父模板base.html

2 block標籤

在父模版中預留區域,子模板去填充

3 子模板填充

extends標籤

繼承模板,需要寫在模板檔案的第一行

#4 例項 base.html 定義父模板

'main'>

# main.html 定義子模板

|safe }}

多個轉義

}

9 csrf驗證
csrf

跨站請求偽造

防止csrf

在settings中啟用

表單過驗證 }

在view.py中引入

from django.views.decorators.csrf import csrf_exempt

在對應的提交函式中

新增@csrf_exempt

#附中介軟體模組

middleware = [

'django.middleware.security.securitymiddleware',

'django.contrib.sessions.middleware.sessionmiddleware',

'django.middleware.common.commonmiddleware',

'django.middleware.csrf.csrfviewmiddleware',

'django.contrib.auth.middleware.authenticationmiddleware',

'django.contrib.messages.middleware.messagemiddleware',

'django.middleware.clickjacking.xframeoptionsmiddleware',

]

10靜態資源的訪問
1. ⼯程下建⽴static⽂件夾

2. settings⾥⾯設定

staticfiles_dirs=[os.path.join(base_dir,』static』)]

3. 在模板中可以直接使⽤ 模板中去訪問靜態資源

4. 載入靜態資源模組

5. src=「」url配置

r』/index/(?p\d+)/(?p\w+)』

re.findall(r』/index/(?p\d+)/(?p\w+)』,』/index/12341234/

asdfsdadh,.14387,./,')

處理函式使⽤固定位置來接收引數

django 學習 二 模板

1.在應用的目錄下建立templates目錄,並建立乙個html檔案,比如my.html 2.修改應用的views.py檔案,將my.html檔案反饋給請求,有以下幾種寫法 從前兩種方法可以看到使用模板的三個要素,模板檔案,需要渲染的資料,httpresponse物件 使用第三種方式可以簡化操作,通...

Django模板渲染 (二)

模板是由html 和一些邏輯控制 組成的,邏輯控制 除了前面介紹的變數和過濾器,還要乙個非常重要的模板標籤。模板標籤的語法規則是,模板標籤在渲染的過程中能提供任意的邏輯關係,模板標籤一般都有著與之對應的結束標籤,其標籤名為在原來的標籤名前加上end。下面介紹下一些常用的模板標籤。條件標籤用於判斷,可...

django 模板語言入門詳解

django 模板語言所解決的問題域 1 動態生成html檔案 2 是上這個模板語言用可用於生成任何形式的文字檔案 從乙個不用模板語言生成html的例子看模板語言的優點 假設我要生成乙個 hello 樣子的頁面 不用template語言時可以寫出來的 以下是頁面的效果圖 不用模板語言的情況下 pyt...