Python Django Ajax進階3

2022-06-23 16:21:12 字數 2391 閱讀 9315

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

1 寫一個類,繼承middlewaremixin,

2 在類中寫方法:

process_request

3 在settings中配置

from django.utils.deprecation import middlewaremixin

from django.shortcuts import render, httpresponse

class mymiddleware1(middlewaremixin):

def process_request(self, request):

# print(request.path)

# print(type(request))

# request.aa='lqz'

print('我是middle1的process_request方法')

# 一旦returnhttpresponse物件,直接返回

# return httpresponse('我返回了')

def process_response(self, request, response):

# request就是請求物件

# response就是響應物件

print('我是middle1的process_response方法')

# response.set_cookie('name','lqz')

return response

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

# callback 是要執行的檢視函式地址

# callback_args是要執行的檢視函式的位置引數(元組)

# callback_kwargs是要執行的檢視函式的關鍵字引數(字典)

# print(type(callback))

# print(callback_args)

# print(callback_kwargs)

# response=callback(request,*callback_args,**callback_kwargs)

print('我是middle1的process_view方法')

# 如果返回response,後面的process_view就不執行了,直接執行中介軟體的process_response方法

# return response

def process_exception(self, request, exception):

#exception 異常物件

print('我是m1的process_exception方法')

class mymiddleware2(middlewaremixin):

def process_request(self, request):

# print(request.path)

# print(type(request))

print('我是middle2的process_request方法')

def process_response(self, request, response):

print('我是middle2的process_response方法')

return response

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

print('我是middle2的process_view方法')

# 只有檢視函式拋異常,才執行

def process_exception(self, request, exception):

print('我是m2的process_exception方法')

print(str(exception))

return httpresponse('您的操作有誤')

def process_template_response(self, request, response):

print('我是m2的process_template_response')

return response

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

xss攻擊/csrf或xsrf跨站請求偽造

使用:中介軟體不註釋,form表單中寫

Django未來將支援Python3

django1 4依然不支援python3,但django團隊計劃在下一個版本 django1 5 支援python3。其釋出說明對於pyt...

Django Python3 常用命令

1 建立django 專案 執行命令 django admin py startproject project name 執行命令 注意 要...

Python3 Django框架子路由配置

我們在開發的時候會把路由統一管理起來。就會在每個應用目錄中建立一個子路由,怎麼操作呢? urls py from django urls import path views urlpatterns 不能以 開頭 path home views home name home views py def ...