Python Django中间件详细介绍

下面就是“Python Django中间件详细介绍”的完整攻略,包含两条示例说明:

介绍

Django中间件(Middleware)是一个可以介入Django请求/响应处理过程的实现机制。通过中间件,用户可以干预Django的request/response处理流程,修改request/response响应的方式和内容。

Django中间件可以方便的实现以下功能:

  • 对请求和响应(包括Http请求和WSGI请求)做纠正,过滤、记录,转发、限制等操作;
  • 在响应前做一些处理,如压缩、加密、设置header等;
  • 对View请求前后进行操作。

安装

Django中间件不需要特别安装,只需在项目的settings.py中进行配置即可。

在MIDDLEWARE_CLASSES中添加你的中间件即可,如:

MIDDLEWARE_CLASSES = [
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'myapp.middleware.MyMiddleware',
]

编写中间件

编写一个Django中间件需要继承中间件中提供的基类,包含以下方法:

__init__(self, get_response)

初始化方法,其中get_response参数是Django视图函数的回调函数。

__call__(self, request)

处理请求和返回响应的方法,其中request参数是Django的HttpRequest对象,返回值是HttpResponse对象。

process_request(self, request)

在路由处理之前调用。

process_view(self, request, view_func, view_args, view_kwargs)

在路由之后和View之前调用。

process_response(self, request, response)

在View之后呈现模板之前调用。

process_exception(self, request, exception)

当一个View抛出异常时调用。

示例1:

class MyMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        # 修改请求
        request.url = '/'

        # 处理响应
        response = self.get_response(request)

        # 修改响应
        response['X-My-Header'] = 'hello world'

        return response

示例2:

class SimpleMiddleware(object):
    def __init__(self, get_response=None):
        self.get_response = get_response

    def __call__(self, request):
        # 处理请求
        print('Middleware Before Request')
        response = self.get_response(request)

        # 处理响应
        print('Middleware After Response')
        return response

配置

使用中间件需要在settings.py中进行配置。

语法:MIDDLEWARE_CLASSES = (中间件类路径)

示例:

MIDDLEWARE_CLASSES += ('a.middleware.SimpleMiddleware',)

可以查看数据,如下:

MIDDLEWARE_CLASSES = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'a.middleware.SimpleMiddleware',
]

以上就是Python Django中间件的详细介绍,包含两条示例说明,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Django中间件详细介绍 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Django框架文件保存的流程(以及自定义FDFS)

    Django框架文件保存的流程 自定义文件存储类过程说明 from django.core.files.storage import Storage from django.conf import settings from fdfs_client.client import Fdfs_client from rest_framework.exception…

    Django 2023年4月13日
    00
  • Django显示可视化图表的实践

    我会详细讲解“Django显示可视化图表的实践”的完整攻略,同时提供两个示例说明。 概述 Django是一款流行的Python Web框架,可以用来开发各种类型的Web应用程序。本攻略主要讲述使用Django来显示可视化图表的实践,其中包括两个示例。 环境准备 在使用Django来显示可视化图表之前,需要准备相关的环境和工具。以下是环境准备的步骤: 安装Dj…

    Django 2023年5月16日
    00
  • Django框架-管理后台项目之分页实现

    一、自定义分页 分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应在数据库表中的起始位置。 1、设定煤业显示的数据条数 2、用户输入页码(第一页,第二页…) 3、根据设定的每页显示条数和当前页码,计算出需要取数据表的起始位置 4、在数据表中根据起始位置取值,页面上输出数据 前面那样会在页面中生成所有的页码,但实际需要是设定指定数量…

    Django 2023年4月13日
    00
  • Django项目发布 环境部署(中)

    python环境部署 我们今天学习的内容是如何将Django项目部署到linux服务器上,我们部署的linux系统是centos7首先,我们先在linux上搭建我们的Python3环境: 在这里首先强调一下,Centos7系统自带的Python2我们不要删除,我们要做的是在Python2和python3并存。 1、  安装Python3的依赖包 2、  命令…

    2023年4月10日
    00
  • Django路由Path方法详解(详细步骤)

    Django中的路由系统是通过URLconf(URL配置)来实现的。URLconf将URL模式映射到视图函数或类上。在Django中,我们可以使用两种方式来定义URLconf,一种是使用基于函数的视图,另一种是使用基于类的视图。 在URLconf中,我们需要使用路由函数来匹配URL模式,Django提供了两种路由函数:path()和re_path()。在本文…

    Django 2023年3月12日
    00
  • Pycharm 操作Django Model的简单运用方法

    下面是详细的“Pycharm 操作Django Model的简单运用方法”的攻略: 1. 安装和配置Pycharm 首先要确保你已经安装了Pycharm,并且成功配置了Django开发环境。如果没有安装和配置,可以参考以下两篇文章进行安装和配置: 如何安装Pycharm? 如何在Pycharm中配置Django环境? 2. 创建Django应用程序 在Pyc…

    Django 2023年5月16日
    00
  • Django2.1.3 中间件使用详解

    下面我将针对“Django2.1.3 中间件使用详解”的完整攻略进行详细讲解,包括中间件的概念、使用方法以及两个示例说明。 概念 在Django中,中间件(Middleware)是一种用于处理请求和响应的工具,类似于拦截器。它可以在接受请求和响应之前或之后执行某些操作,例如处理请求头、检查cookie等。中间件是Django框架中非常强大的一部分,使用它可以…

    Django 2023年5月16日
    00
  • django导入环境变量 Please specify Django project root directory

    在创建了套层的文件后,django需要的解释器也需要重新设置,普通的设置明显不能用,那么该如何解决呢 下图:    点击OK       依次点击 apply 和 ok  

    Django 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部