首页 > 其他分享 >自定义中间件 middleware

自定义中间件 middleware

时间:2023-10-28 13:23:22浏览次数:34  
标签:自定义 process 中间件 middleware request django response

文件夹的创建

1、在项目或者应用下创建一个任意名称的文件夹
2、在该文件夹下创建一个任意名称的py文件
3、在该py文件中写自定义的中间件(这个类必须继承MiddlewareMixin)
      然后在这个类里面就可以自定义五个方法了
	(这五个方法并不是全部都需要书写,用几个写几个)

中间件模板

from django.utils.deprecation import MiddlewareMixin


class MyMiddleware(MiddlewareMixin):  # 必须继承 MiddlewareMixin 这是中间件的核心
    # process_request 和 process_response 这两个必须掌握
    def process_request(self, request):
        print('这是我第一个自定义中间件内的process_request方法')
        return HttpResponse('第一个自定义中间件内的process_request方法')

    def process_response(self, request, response):
        print('这是我第一个自定义中间件内的process_response方法')
        return response

了解方法

了解即可
    process_view
    	# def process_view(self, request, view_name, *args, **kwargs)
        路由匹配成功之后执行视图函数之前,会自动执行中间件里面的该方法
        顺序是按照配置文件中注册的中间件从上往下的顺序依次执行

    process_template_response(特别奇葩,基本不用)
    	# def process_template_response(self, request, response)
        返回的HttpResponse对象必须有render属性的时候才会触发
        顺序是按照配置文件中注册了的中间件从下往上依次经过
        def index(request):
            print('我是视图函数index')
            obj = HttpResponse('index')
            def render():
                print('内部的render')
                return HttpResponse('我是视图层里面的render方法')
            obj.render = render
            return obj

    process_exception
    	# def process_exception(self, request, exception)
        当视图函数中出现异常的情况下触发
        顺序是按照配置文件中注册了的中间件从下往上依次经过

最重要的千万别忘记注册!!!

MIDDLEWARE = [
    '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',
    '你自己写的中间件的路径1',
    '你自己写的中间件的路径2',
    '你自己写的中间件的路径3',
]

标签:自定义,process,中间件,middleware,request,django,response
From: https://www.cnblogs.com/piggthird/p/17794001.html

相关文章

  • FreeSWITCH添加自定义endpoint之api及app开发
    操作系统:CentOS7.6_x64FreeSWITCH版本:1.10.9之前写过FreeSWITCH添加自定义endpoint的文章,今天整理下api及app开发的笔记。历史文章可参考如下链接:FreeSWITCH添加自定义endpointFreeSWITCH添加自定义endpoint之媒体交互一、常用函数介绍这里列举下开发过程中常用的函数。1......
  • c# winfom从0学习开发OA、BPM工作流程与自定义表单系统(十三)新建工作
     1,新建一个工作 2,填写表单 3,当时表单设置的可写字段,在这里就体现出来了,这里设置的第一个节点开始是字段全部可写的,其他节点只能看不能写 4,转交下一步工作,也就是我们流程图连线箭头指向的节点 5,确定转交下一步工作 6,需要登录张三的账号,去代办工作里查看有没有需......
  • 逆向手机银行余额修改生成器,实现自定义修改效果
    哈喽大家好,我又来了,我是专注于APP逆向的小库,我从网上找来了一款银行模拟器,就是装逼用的,然后它存在一个问题,就是每次打开那个余额固定死的,也没有其它修改的地方,而一些小伙伴想把这个余额改成自己想要的内容,这个软件我已经改好了,下面是软件的界面图。我这边主要教大家改这两处:教......
  • VUE+Ant 自定义cron组件,显示最近运行时间
    先上效果图 自定义组件<template><a-modaltitle="corn表达式":width="modalWidth":visible="visible":confirmLoading="confirmLoading"@ok="handleSubmit"@cancel="close"......
  • Fabric.js 使用自定义字体
    本文简介点赞+关注+收藏=学会了如果你使用Fabric.js做编辑类的产品,有可能需要给用户配置字体。这次就讲讲在Fabric.js中创建文本时怎么使用自定义字体、在项目运行时怎么修改字体、以及推荐一个精简字体库的工具。学习本文前,你必须有一点Fabric.js的基础,如果没......
  • Springboot+Mybatis+Mybatisplus 框架中增加自定义分页插件和sql 占位符修改插件
    一、Springboot简介springboot是当下最流行的web框架,SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置,让这些框架集成在一起变得更加简单,简化了我......
  • Toast自定义颜色抛出空指针异常
    首页沸点课程直播活动竞赛商城APP插件 创作者中心 会员登录 注册  实战Android升级目标版本到30过程中遇到的问题及解决办法开发者如是说2021-11-162,006阅读5分钟 专栏: Android开发文章合集 ......
  • ?Mybatis多表查询(1:1、1:N、N:N),MP多表查询(自定义SQL)
    Mybatis多表关联查询Gitee地址:https://gitee.com/zhang-zhixi/mybatis-tables-query.git数据表:oracleCREATETABLE"T_ORDER"("ID"NUMBERNOTNULL,"F_ORDER_TIME"DATE,"F_TOTAL"VARCHAR2(255BYTE),"F_USER_ID"NU......
  • Revit 自定义事务进行自动管理事务DBTrans实现
    第一步:自定义事务对象自定义事务对象///<summary>///自定义事务///</summary>publicclassDBTrans:IDisposable{#region私有字段privatebooldisposedValue;privatebool_commit;///<summary>......
  • Fabric.js 自定义控件
    本文简介带尬猴,我是德育处主任虽然Fabric.js提供的基础功能已经很丰富了,但有时难免需要定制一些需求。比如本文要讲的『自定义控件』。掌握创建自定义控件这个功能,能够创建更加精美和实用的图形应用程序,提高用户体验和用户满意度。尽管Fabric.js的文档很一般,但demo还挺......