django 中間件實現登錄攔截器


1.前言

JavaWeb Struts2的攔截器我們都能很熟悉,在請求交給Action處理之前,先在攔截器中處理,處理完之后再交給Action。 
在Django中如何實現相同的效果?

2.Django中間件

這個是我的項目的目錄結構。 

首先,先在app目錄(也就是我項目的web目錄)中新建一個文件命名為middleware.py 

里面加入以下代碼:

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文件的中間件配置中我們剛剛的中間件。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM