Django檢視之檢視類和中介軟體

就是愛吃肉肉啊發表於2020-10-12

1. 檢視類

1.1 建立檢視類

class RegisterView(View):
    def get(self,request):
        print('當前的請求是get請求')
        return HttpResponse('get')

    def post(self,request):
        return HttpResponse('post')

1.2 路由配置

url(r'register/',RegisterView.as_view()),

1.3 遵循開放封閉原則,新增額外功能

1.3.1 第一種方法

1、在指定的py檔案中建立裝飾器

def wrapper(func):
    def inner(request,*args,**kwargs):
       	pass
    return  inner
    
    

2、在URL地址匹配的過程中,進行額外功能的新增

url(r'showinfo/',wrapper(ShowInfo.as_view()))

1.3.2 第二種方法

from django.utils.decorators import method_decorator

@method_decorator(wrapper,name='dispatch')
class ShowInfo(View):
    def get(self,request):
        return HttpResponse('使用者已經正常登入')
        
注意點:
1、name值不能隨便新增

1.3.3 第三種方法

class WapperClass:

    @classmethod
    def as_view(cls,**kwargs):
        view = super().as_view(**kwargs)
        view = wrapper(view)
        return view

class ShowInfo(WapperClass,View):
    def get(self,request):
        return HttpResponse('使用者已經正常登入')
        
注意點:
1、注意順序

2. 中介軟體

2.1 定義

在請求與響應的過程中,修改Django的輸入或者輸出,在處理檢視的各個階段對輸入和輸出進行干預
https://docs.djangoproject.com/en/1.11/topics/http/middleware/ 官方文件

2.2 自定義中介軟體

class Middleware:
	 def __init__(self, get_response=None):
	 初始化操作
	 	pass
	 def process_request(self, request):
	 	# 在每個請求上,request物件產生之後,URL地址匹配之前進行呼叫,返回None或者Httpresponse物件
	 	pass
	 	
	 	
	 def process_view(self, request, callback, callback_args, callback_kwargs):
	 	# 在處理檢視之前,在每個請求上,URL地址匹配之後,檢視函式呼叫之前,返回的是None或Httpresponse物件	
	 	pass
	 	
	 	
	 def process_response(self, request, response):
	 	# 處理響應後,檢視函式呼叫之後,所有的響應在返回瀏覽器之前被呼叫,在每一個請求上呼叫,返回                HTTPresponse物件
	 	pass
	 	
	 def process_exception(self,request,exception):
	 # 異常處理:當檢視丟擲異常時呼叫,在每一個請求上呼叫,返回的Httpresponse物件
	 	pass
	 
def my_middleware2(get_response):
    print('此處做的是初始化操作init 中介軟體2被呼叫')

    def middleware(request):

        print('在request被呼叫之前 中介軟體2')

        response = get_response(request)

        print('在response之後呼叫 中介軟體2')

        return response

    return middleware

2.3 中介軟體順序

在這裡插入圖片描述

相關文章