由django請求生命週期延伸出的知識點大總結

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協議實際上是定義了一種serverapplication解耦的規範,咱們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

相關文章
相關標籤/搜索