JavaWeb Struts2的攔截器咱們都能很熟悉,在請求交給Action處理以前,先在攔截器中處理,處理完以後再交給Action。
在Django中如何實現相同的效果?web
這個是個人項目的目錄結構。 django
首先,先在app目錄(也就是我項目的web目錄)中新建一個文件命名爲middleware.py 瀏覽器
裏面加入如下代碼:session
from django.shortcuts import render,HttpResponse,redirect,HttpResponseRedirect try: from django.utils.deprecation import MiddlewareMixin # Django 1.10.x except ImportError: MiddlewareMixin = object # Django 1.4.x - Django 1.9.x class SimpleMiddleware(MiddlewareMixin): def process_request(self, request): if request.path != '/login/' and request.path != '/Web/CheckCode/': if request.session.get('user',None): pass else: return HttpResponseRedirect('/login/')
在process_request中處理請求,process_response處理響應。
在process_request方法中,返回值爲HttpResponse類型的對象的時候不交給普通的控制器處理,直接返回給瀏覽器,返回值爲None的時候,請求處理完以後交給普通的控制器處理。
在settings.py文件的中間件配置中咱們剛剛的中間件。 app