django項目搭建見:html
http://www.javashuo.com/article/p-yeulmrio-bs.htmlweb
django請求生命週期圖:數據庫
由瀏覽器發起請求開始django
知識點1:json
瀏覽器與服務器軟件架構:C/S架構瀏覽器
HTTP協議:又稱超文本傳輸協議,它規定了瀏覽器與服務端數據傳輸的格式tomcat
HTTP協議四大特性:安全
基於TCP/IP做用於應用層的協議服務器
基於請求響應cookie
無狀態
無鏈接
知識點2:
請求格式及響應格式:
請求格式:
請求首行
請求頭
空行(\r\n)
請求體
響應格式:
響應首行
響應頭
空行
響應體
wsgiref請求響應處理
知識點3:web服務網關協議
cgi:通用網關協議
wsgi協議:
wsgi協議(Web Server Gateway Interface) 主要包含server和application兩部分:
WSGI server
負責從客戶端接收請求,將request
轉發給application
,將application
返回的response
返回給客戶端;WSGI application接收由server轉發的request,處理請求,並將處理結果返回給server。application中能夠包括多個棧式的中間件(middlewares),這些中間件須要同時實現server與application,所以能夠在WSGI服務器與WSGI應用之間起調節做用:對服務器來講,中間件扮演應用程序(執行程序),對應用程序來講,中間件扮演服務器(WSGI服務器)。
WSGI
協議實際上是定義了一種server
與application解耦
的規範,咱們django自帶的wsgiref是對該協議的具體實現
此外還有不少其餘實現該協議的服務器:
uwsgi:支持較高併發,django項目上線通常會選擇用它替換django自帶的wsgiref == JAVA中的tomcat
wsgiref:支持併發不高,django自帶
請求解析完成後依次經過Django中間件
知識點4:django中間件
django自帶七大中間件:能夠簡單理解爲django的門戶,安全認證及全局處理都在這裏面
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', ]
除了django自帶的中間件之外咱們還能夠自定義中間件實現一些全局的校驗和配置
方法:在應用下新建文件夾,名字自取,文件夾下新建任意py文件,名字自取,接下來就能夠在py中定義本身的中間件l
# 導入MiddlewareMixin模塊 from django.utils.deprecation import MiddlewareMixin #定義中間件的類,它繼承MiddlewareMixin class Md1(MiddlewareMixin): def process_request(self, request): print('Md1裏面的process_request') class Md2(MiddlewareMixin): def process_request(self, request): print('Md2裏面的process_request')
django暴露給開發者5種方法分別是:
process_request(self, request): #請求來的時候執行 process_response(self, request, response): #響應返回時執行 process_template_response(self, request, response): #視圖函數執行完了執行 process_view(self, request, view_func, view_args, view_kwargs): #路由匹配成功後視圖函數執行前執行 process_exception(self, request, exception): #視圖函數出錯時執行
中間件具體做用及執行流程詳見:http://www.javashuo.com/article/p-qbrfqflq-ke.html
接下來進入urls.py,路由匹配
知識點5:路由系統
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^$',views.home), url(r'^test/$',views.test), url(r'^testadd/$',views.testadd), url(r'',views.error) ]
①路由正則匹配
②無名分組
③有名分組
④反向解析
⑤路由分發
路由系統詳見:http://www.javashuo.com/article/p-nkypyunf-kk.html
路由匹配成功,進入視圖函數
知識點6:CBV/FBV
FBV:
路由層寫法:
url(r'^test/$',views.test),
視圖層寫法:
def text(request): if request.method == "POST": return HttpResponse("ok") elif request.method == "GET": return HttpResponse("ok")
CBV:
路由層寫法:
url(r'^test/$',views.Text.as_view()),
視圖層寫法:
from django.views import View class Text(View): def get(self,request): return HttpResponse("ok") def post(self,request): return HttpResponse("ok")
三板斧及jsonresponse
from django.shortcuts import render,redirect,HttpResponse from django.http import JsonResponse
CBV源碼剖析見:
視圖函數處理數據,進行django模板渲染
知識點7:django模板層
①過濾器
②標籤
③自定義過濾器、標籤、inclusion_tag
④模板繼承與導入
⑤靜態文件配置
詳見:
模板層:http://www.javashuo.com/article/p-finxqstq-gq.html
補充:http://www.javashuo.com/article/p-hocvxdvt-e.html
知識點8:cookie與session
①cookie基本使用
②session原理及使用
③auth模塊
④自定義User表
cookie與session使用見:http://www.javashuo.com/article/p-bzzrwtkz-eh.html
auth模塊及自定義User表使用見:http://www.javashuo.com/article/p-dcfxvqnt-kd.html
知識點9:form認證組件
①form組件使用
②form組件進階
③分頁器
form組件:http://www.javashuo.com/article/p-fsodyuqv-cp.html
form組件進階:http://www.javashuo.com/article/p-sqnbaoie-g.html
分頁器:http://www.javashuo.com/article/p-qjtknjxy-cr.html
知識點10:django數據庫操做:
①一對1、一對多、多對多表分析及建立
②多對多表三種建立方式
③django ORM增刪改查、單表操做、多表操做
④F、Q查詢
⑤ORM類、字段基礎
⑥事務、批量插入、查詢優化
表關係:http://www.javashuo.com/article/p-gmdviixd-gc.html
多對多表三種建立方式:http://www.javashuo.com/article/p-yjigehkj-ch.html
ORM增刪改查:http://www.javashuo.com/article/p-utgsgsym-gg.html
F、Q查詢:http://www.javashuo.com/article/p-pzvugmnd-hn.html
ORM基礎:http://www.javashuo.com/article/p-wbfksjui-gk.html
django-model進階:https://www.cnblogs.com/liuqingzheng/articles/9805991.html
知識點11:
未完待續...
原文出處:https://www.cnblogs.com/dongxixi/p/11115921.html