广告
返回顶部
首页 > 资讯 > 后端开发 > Python >django中间件-12
  • 927
分享到

django中间件-12

中间件django 2023-01-30 22:01:10 927人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录 自定义中间件 函数定义 类定义 中间件的执行顺序 在Django中,中间件其实

目录

  • 自定义中间件
    • 函数定义
    • 类定义
  • 中间件的执行顺序

Django中,中间件其实就是一个类,他是一个可以介入djanGorequestresponse 的钩子框架,在请求响应不同的阶段,执行类中不同的代码,用于在全局修改django的输入输出。

自定义中间件

自定义中间件有两种方式,使用函数定义,和使用类定义。

自定义中间件一般定义在项目目录或者‘应用目录下的 middleware.py 文件下。

函数定义

def simple_middleware(get_response):
    # 此处编写的代码仅在Django第一次配置和初始化的时候执行一次。

    def middleware(request):
        # 此处编写的代码会在每个请求处理视图前被调用。

        response = get_response(request)

        # 此处编写的代码会在每个请求处理视图之后被调用。

        return response

    return middleware

示例

def simple_middleware(get_response):
    print("django被初始化")

    def middleware(request):
        print("请求")
        response = get_response(request)
        print("响应")
        return response
    return middleware

访问视图执行结果

django被初始化
[20/Oct/2018 09:44:54] "POST /middleware Http/1.1" 200 12
请求
视图函数
响应

类定义

class SimpleMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response
        # 此处编写的代码仅在Django第一次配置和初始化的时候执行一次。

    def __call__(self, request):
        # 此处编写的代码会在每个请求处理视图前被调用。

        response = self.get_response(request)
        # 此处编写的代码会在每个请求处理视图之后被调用。

        return response

示例

class SimpleMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response
        print("初始化")

    def __call__(self, request):
        print("请求")

        response = self.get_response(request)
        print("响应")

        return response

访问视图执行结果

django初始化
[20/Oct/2018 10:13:34] "POST /middleware HTTP/1.1" 200 12
请求
视图函数
响应

与旧版本中间件的兼容

在Django 1.10版本之前,中间件设置名为MIDDLEWARE_CLASSES,是长这样的:

class Middleware(MiddlewareMixin):

    def __init__(self, get_response=None):
        # 此处编写的代码仅在Django第一次配置和初始化的时候执行一次。
        self.get_response = get_response

    def process_request(self, request):
       # 此处编写的代码会在每个请求处理视图前被调用。

    def process_response(self, request, response):
        # 此处编写的代码会在每个请求处理视图之后被调用。

        return response

示例

class Middleware(MiddlewareMixin):

    def __init__(self, get_response=None):
        print("django初始化")
        self.get_response = get_response

    def process_request(self, request):
        print("请求")

    def process_response(self, request, response):
        print("响应")

        return response

访问视图执行结果

django初始化
[20/Oct/2018 10:13:34] "POST /middleware HTTP/1.1" 200 12
请求
视图函数
响应
  • 参数get_response代表被访问的视图函数

中间件的执行顺序

中间件的执行顺序和注册顺序有关系。在视图函数处理前,会按注册顺序从上往下执行。在属兔函数处理后,会按注册顺序从上往下执行, 在初始化的时候,也是从下往上执行。

示例

定义两个中间件

def simple_middleware(get_response):
    print("django被初始化")

    def middleware(request):
        print("请求")
        response = get_response(request)
        print("响应")
        return response
    return middleware


class SimpleMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response
        print("初始化")

    def __call__(self, request):
        print("请求")

        response = self.get_response(request)
        print("响应")

        return response

注册顺序

MIDDLEWARE = [
    'middleware.middleware.simple_middleware',
    'middleware.middleware.SimpleMiddleware',

执行结果

初始化2
django被初始化1
请求1
请求2
视图函数
响应2
响应1

--结束END--

本文标题: django中间件-12

本文链接: https://www.lsjlt.com/news/180096.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • django中间件-12
    目录 自定义中间件 函数定义 类定义 中间件的执行顺序 在django中,中间件其实...
    99+
    2023-01-30
    中间件 django
  • Django 中间件
    目录 一.中间件 二.中间件用途 三.中间件方法 四.自定义中间件 process_view proc...
    99+
    2023-01-30
    中间件 Django
  • Django之中间件
    中间件介绍   中间件是一个用来处理Django的请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。每个中间件组件都负责做一些特定的功能。   但是由于其影响的是全局,所以需要谨慎使...
    99+
    2023-01-30
    中间件 Django
  • Django 中间件 请求前
    中间件: class TestMiddleware(object): """中间件类""" def __init__(self): """服务器重启之后,接收第一个请求时调用""" pas...
    99+
    2023-01-30
    中间件 Django
  • Django中间件的使用
    中间件(middleware) 中间件应用于request与服务端之间和服务端与response之间,客户端发起请求到服务端接收可以通过中间件,服务端返回响应与客户端接收响应可以通过中间件,也就是说中间件可以处理request和resp...
    99+
    2023-01-30
    中间件 Django
  • Django的中间件是什么
    本篇内容主要讲解“Django的中间件是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Django的中间件是什么”吧!什么是中间件(middleware) django 中的中间件(midd...
    99+
    2023-06-04
  • Django——中间件设置缓存
    如图所示查看网站缓存时间 在app中创建middleware.py文件,导入MiddlewareMixin,创建类并继承MiddlewareMixin 在settings中的MIDDLEWARE=[ ] 注册中间件类;添加一个CAC...
    99+
    2023-01-30
    缓存 中间件 Django
  • day 63 Django基础九之中间件
        本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏      我们在前面的课程中已经学会了...
    99+
    2023-01-31
    中间件 基础 day
  • django-10-中间件和上下文管理器
    <<<中间件的引入>>> 用户<->中间件<->url->视图  在app目录里面 middleware.py  (1)中间件就是一个可调用的对象,接受一个request并...
    99+
    2023-01-31
    上下文 管理器 中间件
  • Django中间件整合Vue拦截器的使用
    目录axios拦截器是什么?拦截器的使用请求拦截器响应拦截器Django中间件token验证中间件相关自定义中间件中间件的执行流程用中间件进行登录认证总结axios拦截器是什么? ...
    99+
    2022-11-12
    Django Vue拦截器 Django 拦截器
  • django-基于中间件实现限制ip频繁
    ########django-基于中间件写一个限制频繁登陆######## 额额,标题已经很醒目了,通过中间件去实现,其他方法也可以实现 浏览器前端传来的请求,必须通过中间件,才能到后面路由,视图函数,所以我们在中间件那里做一层处理...
    99+
    2023-01-30
    中间件 频繁 django
  • 深入探索Django中间件的应用场景
    目录中间件的应用Django中间件概述自定义中间件总结中间件的应用 在之前的文章中,我们已经实现了用户必须登录才能投票的限制。然而,如果我们的应用中有很多功能都需要用户先登录才能执行...
    99+
    2023-05-18
    Django中间件 Django中间件的作用
  • Django 中间件实现用户认证与IP频
    1.URL访问过滤 通过装饰器进行用户认证非常方便,但是在添加部分需要认证的功能时,就需要再次添加装饰器,如果通过中间件来实现,就不需要再进行添加的操作. import re LOGIN_URL = '/login/' class MyL...
    99+
    2023-01-30
    中间件 用户 Django
  • Django基础CBV装饰器和中间件的应用示例
    目录1. CBV加装饰器2. Django中间件2.1 Django中间件介绍2.2 自定义中间件2.3 自定义中间件总结2.4 其他中间件函数2.5新版本中间件写法3.Csrf中间...
    99+
    2022-11-13
    Django基础 CBV装饰器和中间件 Django CBV装饰器中间件
  • 如何在Go和Django之间构建接口文件?
    在当今的软件开发中,构建API(应用程序接口)是非常重要的一项工作。这些接口允许不同的应用程序之间进行通信,并共享数据和功能。在构建接口时,选择合适的技术和框架是至关重要的。Go和Django是两个非常流行的框架,本文将介绍如何在这两个框架...
    99+
    2023-08-25
    django 接口 文件
  • Django框架CBV装饰器中间件auth模块CSRF跨站请求问题
    CBV添加装饰器 给CBV添加装饰器有三种方法,三种方法都需要导入模块: from django.utils.decorators import method_decorator...
    99+
    2022-11-12
    Django CBV装饰器 CSRF跨站请求
  • Django中ContentType组件怎么用
    这篇文章将为大家详细讲解有关Django中ContentType组件怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题如何在一张表上对多个表进行外键关联from django.db&nbs...
    99+
    2023-06-21
  • 探索Go和Django之间的接口文件交互方式?
    Go语言和Django框架都是目前非常流行的开发工具,它们都有各自的优点和适用场景。在实际开发中,我们可能会遇到Go和Django之间需要进行接口文件交互的情况,那么有哪些方式可以实现呢? 一、使用HTTP协议进行交互 HTTP协议是常用的...
    99+
    2023-08-25
    django 接口 文件
  • Express中间件
    1.创建最基本的中间件 const express = require('express');const send = require('send');const app = express()const mw = function (re...
    99+
    2023-09-21
    中间件
  • ASP.NETCore中间件
    目录1.前言2.使用中间件2.1 Run2.2 Use2.3 Map和MapWhen3.顺序4.编写中间件(重点)4.1中间件类4.2中间件扩展方法5.按每次请求创建依赖注入(DI)...
    99+
    2022-11-13
    ASP.NET Core 中间件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作