Django自定義中介軟體
阿新 • • 發佈:2019-01-31
django中介軟體是嵌入 django 的 request/response 處理過程的一套鉤子框架。它是一個輕量級的底層嵌入系統,可以對 django 的輸入輸出做整體的修改
Django中介軟體必須是一個類,不需要繼承任何類,並提供四個介面:
1、 process_request(self, request)該方法在請求到來的時候呼叫。
2、 process_view(self ,request, fnc , arg ,kwarg)在本次將要執行的View函式被呼叫前呼叫本函式。
3、 process_response(self,request,response)在執行完View函式準備將響應發到客戶端前被執行。
4、 **process_exception(self,request, exception)**View函式在丟擲異常時該函式被呼叫,得到的exception引數是實際上丟擲的異常例項。通過此方法可以進行很好的錯誤控制,提供友好的使用者介面。
要啟用中介軟體,需要把它新增到Django 配置檔案settings.py中的MIDDLEWARE中。
例如:判斷請求的終端是pc還是iPhone:
1.我們在app下建立一個my_middleware.py的檔案:
from django.utils import deprecation class CheckSourceMiddleware(deprecation.MiddlewareMixin): def process_request(self, request): from_source = request.META['HTTP_USER_AGENT'] print('from_source', from_source) if 'iPhone' in from_source: request.session['from_source'] = 'iphone' else: request.session['from_source'] = 'pc'
2.在views.py檔案中加一下程式碼:
def index(request):
from_source = request.session.get('from_source', 'unknow')
res = 'from %s' % from_source
return HttpResponse(res)
3.在settings.py檔案的MIDDLEWARE陣列中加入:
'app_name.my_middleware.CheckSourceMiddleware',
以上,我們訪問index檢視的時候,就會得到我們是以電腦開啟的還是以iphone手機開啟的