Python - Django - 自定义一个中间件
中间件简介:
中间件是在 wsgi.py 之后,urls.py 之前,在全局操作 Django 请求和响应的模块
在 settings.py 中可以看到中间件的相关配置
该列表中的每一个元素都是一个类,一个中间件
例如:
django.middleware.csrf.CsrfViewMiddleware
可以写为:
from django.middleware.csrf import CsrfViewMiddleware
中间件的处理顺序就是按照该列表元素的顺序进行处理
中间件中可以定义 5 个方法:
process_request(self, request)
process_response(self, request, response)
process_view(self, request, view_func, view_args, view_kwargs)
process_template_response(self, request, response)
process_exception(self, request, exception)
自定义中间件:
在根目录下新建一个 middleware_test.py 文件
middleware_test.py:
from django.utils.deprecation import MiddlewareMixin class Test(MiddlewareMixin):
def process_request(self, request):
print("这是一个中间件 --> test") class Test2(MiddlewareMixin):
def process_request(self, request):
print("这是一个中间件 --> test2")
在 settings.py 的中间件配置中添加自定义的中间件
这里先添加 Test2,再添加 Test,所以会先执行 Test2,再执行 Test
views.py:
from django.shortcuts import HttpResponse def index(request):
print("这里是 index 页面")
return HttpResponse("这里是主页面 index")
访问,http://127.0.0.1:8000/index/
看一下 pycharm 打印了什么
先执行了中间件 Test2,然后再执行 Test1,最后执行的是 views.py 中的 index 函数
Python - Django - 自定义一个中间件的更多相关文章
- python django 自定义 装饰器
# -*-coding:utf-8-*- __author__ = "GILANG (pleasurelong@foxmail.com)" """ d ...
- koa2怎么自定义一个中间件
首先定义一个方法 function test(ctx){ global.console.log('m1') } 把这个中间件导出去 module.exports=function(){ return ...
- python django搭建一个简易博客的解析(按照文件顺序逐一讲解)
上次讲解了一下各py文件的内容,但比较乱,所以这次整理了一个顺序版. 源代码请在http://github/Cheng0829/mysite自行下载 mysite: db.sqlite3:数据库文件. ...
- Python Django 编写一个简易的后台管理工具4-添加admin模版
导入admin后台模版 可以在网上任意搜索模版,我这里也提供一个地址github 拷贝admin后台的html文件至项目的templates文件夹 创建static文件夹,将admin后台的js,im ...
- Python Django 编写一个简易的后台管理工具1-安装环境
安装python环境 MAC 一般都会自带 Python2.x版本 的环境,你也可以在链接 https://www.python.org/downloads/mac-osx/ 上下载最新版安装. 安装 ...
- Python Django 编写一个简易的后台管理工具3-运行项目
编写view页面 def hello(request): return render(request,'hello.html') 编写html页面 <!DOCTYPE html> < ...
- Python Django 编写一个简易的后台管理工具2-创建项目
django-admin 创建项目 pycharm 创建项目
- django中的中间件
中间件介绍 什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出.每个中间件组件都负责 ...
- Django框架 之 中间件
Django框架 之 中间件 浏览目录 中间件介绍 自定义中间件 中间件的执行流程 中间件版登录验证 一.中间件介绍 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个 ...
随机推荐
- git分布式版本控制系统的概述和安装
Git历史 同生活中的许多伟大赛事一样,Git诞生于一个极富纷争大举创新的年代.Linux内核开源项目有着为数众广的参与者.绝大多数的Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上(19 ...
- Java Mail 异常
Java Mail 异常 java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream 解决方案: 把Jar包换一个比较高的版本就 ...
- 使用ArcGIS for Server的Feature Access REST在线编辑图层
如何启用Feature Access可以参考以前写的一篇博客:http://www.cnblogs.com/oceanking/p/3895257.html 本文主要关注一个全是点的图层,我也不知道学 ...
- php的快速排序
<?php function quicksort($str){ if(count($str)<=1) return $str;//如果个数不大于一,直接返回 ...
- tasklist /m
\>tasklist /m explorer*映像名称 PID 模块 = ...
- spring boot是一个应用框架生成工具?
spring boot是一个应用框架生成工具?
- 第5章 Spring的事务管理
5.1 Spring事务管理概述 5.11 事务管理的核心接口 在Spring的所有jar包中,有一个名spring-tx-4.3.6RELEAS的jar包,是提供事务管理的依赖包.在该包的org.s ...
- Codechef July Challenge 2019 Snake and Apple Tree
费用流.把每个方格拆成 $T$ 个点,$t$ 时刻一个方格向周围四个方格的 $t + 1$ 的点连一条容量为 $1$ 费用为 $0$ 的边,向自身的 $t + 1$ 连一条容量为 $1$ 费用为该方格 ...
- Pandas模块 -- 实操练习
如果对序列进行数学函数的运算,首选numpy模块: 如果对序列做统计运算,首选序列的“方法”,因为序列的“方法”更加丰富,如计算序列的偏度.峰度等,而Numpy模块是没有这样的函数. 手工构造数据框D ...
- cpu的发现
system.cpu.discovery 检测到的CPU/CPU内核列表.用于低级发现 返回的cpu从0开始编号,其他关于cpu的监控项就可以使用cpu的id进行单个cpu的资源监控