Django之元件 中介軟體

2021-09-12 09:56:01 字數 2581 閱讀 5425

中介軟體是介於request與response處理之間的一道處理過程,相對比較輕量級,並且在全域性上改變django的輸入與輸出。因為改變的是全域性,所以需要謹慎實用,用不好會影響到效能

1寫乙個類,繼承middlewaremixin,

2在類中寫方法:

process_request

3 在settings中配置

from django.utils.deprecation import

middlewaremixin

class

corsmiddle(middlewaremixin):

defprocess_response(self,request,response):

#從什麼位址跨

response['

access-control-allow-origin

'] = '

'#非簡單請求,

if request.method == '

options':

#如果是put和delete方法,重新再發一次請求

response['

access-control-allow-methods

'] = '

put,delete

'response[

'access-control-allow-headers

']='

content-type

'return

response

mid.py

自定義跨域

process_request(self,request)

-執行順序,settings中中介軟體自上而下執行

-請求來的時候會執行它

-request物件,就是本次請求的request物件,對它處理後,檢視函式拿到的就是處理後的request物件

-可以拿到所有request請求內容!

process_view(self, request, callback, callback_args, callback_kwargs)

-callback是檢視函式,callback_args, callback_kwargs是檢視函式的引數

-可以呼叫callback方法

process_template_response(self,request,response)(忘掉)

-只有檢視函式返回的物件中有render方法的時候,才會執行

process_exception(self, request, exception)

-檢視函式出錯,會執行它

process_response(self, request, response)

-執行順序,settings中中介軟體自下而上執行

-響應走的時候,會執行它

-request物件,就是本次請求的request物件,response是響應物件(httpresponse的物件)

-如果process_request方法返回httpresponse的物件,請求直接返回,按中介軟體方法執行順序往回走

-必須return返回

-

xss攻擊/csrf跨站請求偽造

在不注釋csrf中介軟體的情況下,在ajax提交資料的時候,必須將寫在瀏覽器的key和value帶回去,不然會被django框架禁止。
'csrfmiddlewaretoken': $('[name="csrfmiddlewaretoken"]').val()

"en

">

姓名:"

text

" id="

name

">

密碼:"

password

" id="

pwd">

資訊:"

text

" id="

info

">

"submit

">提交

前台

前台

登陸成功

')後台

posted @

2019-01-23 15:12

chuckxue 閱讀(

...)

編輯收藏

Django 中介軟體

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

Django中介軟體

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

Django中介軟體

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