Django中间件实现拦截器的方法

1.前言

JavaWeb Struts2的拦截器我们都能很熟悉,在请求交给Action处理之前,先在拦截器中处理,处理完之后再交给Action。

在Django中如何实现相同的效果?

2.Django中间件

这个是我的项目的目录结构。

首先,先在app目录(也就是我项目的web目录)中新建一个文件命名为middleware.py

里面加入以下代码:

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):
return None
def process_response(self, request, response):
return response

在process_request中处理请求,process_response处理响应。

在process_request方法中,返回值为HttpResponse类型的对象的时候不交给普通的控制器处理,直接返回给浏览器,返回值为None的时候,请求处理完之后交给普通的控制器处理。

在settings.py文件的中间件配置中我们刚刚的中间件。

至此利用中间件做拦截器的工作配置完成。

(0)

相关推荐

  • Python Django中间件,中间件函数,全局异常处理操作示例

    本文实例讲述了Python Django中间件,中间件函数,全局异常处理操作.分享给大家供大家参考,具体如下: 应用名/middleware.py(定义中间件类,中间件函数.文件名可以任意): from django.http import HttpResponse # 定义中间件类. (类名可以任意,但类中的方法名是固定的) class TestMiddleware(object): '''中间件类''' def __init__(self): '''服务器重启之后,接收第一个请求时调用(只会

  • Django 限制用户访问频率的中间件的实现

    一.定义限制访问频率的中间件 common/middleware.py import time from django.utils.deprecation import MiddlewareMixin MAX_REQUEST_PER_SECOND=2 #每秒访问次数 class RequestBlockingMiddleware(MiddlewareMixin): def process_request(self,request): now=time.time() request_queue =

  • 详解django自定义中间件处理

    中间件是一个钩子框架,它们可以介入 Django 的请求和响应处理过程. 它是一个轻量级.底层的 插件 系统,用于在 全局修改 Django 的输入或输出 . 每个中间件组件负责完成某个特定的功能 这里介绍的中间件方法适用于 Django1.10 以上 相关文件: django middleware Django基础中间件 django.utils.deprecation.py class MiddlewareMixin(object): def __init__(self, get_respo

  • Django中间件工作流程及写法实例代码

    熟悉web开发的同学对hook钩子肯定不陌生,通过钩子可以方便的实现一些触发和回调,并且做一些过滤和拦截. django中的中间件(middleware)就是类似钩子的一种存在.下面我们来介绍一下,并且给出一些实例. 1.Middleware的工作流程 我盗了一个图,看网上很多人用这个图,来源已经追不明白了.简单声明一下,这个图不是我的.看着图我们分析一下: 1)django的请求相应流程:HttpRequest -> RequestMiddleware -> view function -&

  • Django中间件拦截未登录url实例详解

    1.利用装饰器在视图中拦截未登录的url @login_required(login_url='/user/login/') def homepage(request): pass 这种方法适合于程序中只有少数几个需要登录拦截的url. 2. 利用中间件技术拦截未登录的url 2.1 在settings.py添加MIDDLEWARE设置:middleware.LoginCheckMiddleware MIDDLEWARE = [ 'django.middleware.security.Secur

  • 详解Django中间件执行顺序

    中间件 Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出.中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性. 我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预. 1 中间件的定义方法 定义一个中间件工厂函数,然后返回一个可以别调用的中间件. 中间件工厂函数需要接收一个可以调用的get_response对象. 返回的中间件也是一个可以被调用的对象,并且像视图一样需要接收

  • Django2.1.3 中间件使用详解

    环境 Win10 Python3.6.6 Django2.1.3 中间件作用 中间件用于全局修改Django的输入或输出. 中间件常见用途 缓存 会话认证 日志记录 异常 中间件执行流程 全局异常捕捉实现 创建django项目&添加app django-admin startproject middleware cd middleware django-admin startapp app 添加app到项目 # middleware/settings.py # INSTALLED_APPS最后添

  • 详解Django中间件的5种自定义方法

    Django中间件 在http请求 到达视图函数之前 和视图函数return之后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 中间件的执行流程 1.执行完所有的request方法 到达视图函数. 2.执行中间件的其他方法 3.经过所有response方法 返回客户端. 注意:如果在其中1个中间件里 request方法里 return了值,就会执行当前中间件的response方法,返回给用户 然后 报错..不会再执行下一个中间件. 自定义中间件 1.在project下随便创建

  • 简介Django中内置的一些中间件

    认证支持中间件 中间件类: django.contrib.auth.middleware.AuthenticationMiddleware . django.contrib.auth.middleware.AuthenticationMiddleware . 这个中间件激活认证支持功能. 它在每个传入的 HttpRequest 对象中添加代表当前登录用户的 request.user 属性. It adds the request.user attribute, representing the

  • 从django的中间件直接返回请求的方法

    实例如下所示: #coding=utf-8 import json import gevent from django.http import HttpResponse from sdsom.web.recorder import get_event_type from sdsom.web.recorder import get_request_event_info from sdsom.db.rpcclient import get_db_client class RecordEventMid

随机推荐