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 作用9 csrf驗證模板繼承可以減少頁面的重複,父模板base.html
2 block標籤
在父模版中預留區域,子模板去填充
3 子模板填充
extends標籤
繼承模板,需要寫在模板檔案的第一行
#4 例項 base.html 定義父模板
'main'>
# main.html 定義子模板
|safe }}
多個轉義
}
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...