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文件的中间件配置中我们刚刚的中间件。 

 

posted @ 2017-02-06 11:54  王志康  阅读(7229)  评论(0)    收藏  举报