Django-MiddleWare

中間件中可以定義五個方法:

  1. process_request(self,request)

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

  3. process_template_response(self,request,response)

  4. process_exception(self, request, exception)

  5. process_response(self, request, response)



創建中間件

最基本的樣子是:

class CommonMiddleware(object):
    def process_request(self, request):
        return None
 
    def process_response(self, request, response):
        return response

拓展後的樣子是: 

class MiddleWare_Test(object):

    def process_request(self,request):
        pass
    def process_view(self, request, callback, callback_args, callback_kwargs):
        pass
    def process_exception(self, request, exception):
        pass
    def process_response(self, request, response):
        return response

 

比如說要創建一個攔截惡意訪問的中間件:

class BlockedIpMiddleware(object):
    def process_request(self, request):
        if request.META['REMOTE_ADDR'] in getattr(settings, "BLOCKED_IPS", []):
            return http.HttpResponseForbidden('<h1>Forbidden</h1>')

註冊中間件

MIDDLEWARE = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'xxx.xx.MiddleWare_Test'
    #xxx是目錄,xx是py腳本名
)


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章