Django中介軟體執行流程和CSRF驗證

2021-08-27 14:05:06 字數 1113 閱讀 1339

django的中介軟體是乙個輕量級的外掛程式,可以改變django的輸入和輸出,中介軟體共有5種方法,分別為:

前兩個方法 都是自上而下的執行每個中介軟體,後面的三個都是反著來的

django的csrf是基於中介軟體來實現的,而且是放在中介軟體中的view方法中,原因是:django的中介軟體是作用於全域性的,但是某些情況某個函式可能不需要用到csrf驗證,所以在執行路由匹配的時候找到檢視函式,看看他是否需要用到csrf認證,如果不需要則會跳過csrf。

免除認證的方法:

# fbv

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt

def test(request):

pass

# 在cbv的方式中,單獨給某個方法通過裝飾器來免除是無效的,需要加到dispatch函式上面

# 方法1

from django.views.decorators.csrf import csrf_exempt

from django.utils.decorators import method_decorator

class test1(apiview):

@method_decorator(csrf_exempt)

def dispatch(self, request, *args, **kwargs):

ret = super(test1,self).dispatch(request, *args, **kwargs)

return ret

# 方法2

@method_decorator(csrf_exempt,name='dispatch')

class test2(apiview):

pass

單獨想用csrf的方法:

# 1.去掉setting中csrf中介軟體

from django.views.decorators.csrf import csrf_protect

@csrf_protect

def test(request):

pass

Django 中介軟體

django中的中介軟體是乙個輕量級 底層的外掛程式系統,可以介入django的請求和響應處理過程,修改django的輸入或輸出。中介軟體的執行過程如下圖所示 django在中介軟體中預置了五個方法,這五個方法的區別在於不同的階段執行,對輸入或輸出進行干預,方法如下 def init self pa...

Django中介軟體

給檢視函式加裝飾器判斷使用者是否登入,把沒有登入的請求跳轉到登入頁面,我們通過給幾個特定檢視函式加裝飾器實現了這個需求,但是這樣做比較繁瑣,用django中的中介軟體會比較簡潔 什麼是中介軟體 中介軟體是幫助我們再檢視函式執行之前和執行之後都可以做一些額外的操作,它本質上就是乙個自定義類,類中定義了...

Django中介軟體

什麼是中介軟體?django中的中介軟體是乙個輕量級 底層的外掛程式系統,可以介入django的請求和響應處理過程,修改django的輸入或輸出。中介軟體的設計為開發者提供了一種無侵入式的開發方式,增強了django框架的健壯性。我們可以使用中介軟體,在django處理檢視的不同階段對輸入或輸出進行...