中間件中可以定義五個方法:
-
process_request(self,request)
-
process_view(self, request, callback, callback_args, callback_kwargs)
-
process_template_response(self,request,response)
-
process_exception(self, request, exception)
-
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腳本名
)