博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django 中间件
阅读量:4972 次
发布时间:2019-06-12

本文共 1431 字,大约阅读时间需要 4 分钟。

一、Django请求生命周期

浏览器 → wsgi模块 → 中间件 → urls控制器 → 视图函数 → 数据库/模板渲染

  ↑                               ↓

  *     ←    wsgi模块       ←       中间件       ←      识图函数  ←  *

 

 

 二、中间件介绍

中间件顾名思义 是介于request与response处理之间的一道处理过程 相比较轻量级 并且在全局上改变django的输入与输出。 

django中默认自带的一些中间件(settings.py文件中)

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',    'apptest',]

 

 

 三、自定义中间件

 中间件可以定义五个方法 分别是 

  • process_request(self,request)
  • process_view(self,request,view_func,view_args,view_kwargs)
  • process_template_response(self,request,response)
  • process_exception(self,request,exception)
  • process_response(self,request,response)

 

自定义一个中间件示例 

from django.utils.deprecation import MiddlewareMixinfrom django.urls import reversefrom django.shortcuts import HttpResponse,redirectclass MD1(MiddlewareMixin):    def process_request(self,request):        # 请求来时 过中间件会自动执行 正常返回None 异常可以回复HttpResponse对象,由上而下执行        print('hi MD1的请求')class MD2(MiddlewareMixin):    def process_request(self,request):        print('Md2的process_request')        pass

  

 process_request

有一个参数,就是request,这个request和视图函数中的request是一样的

 

 

 

转载于:https://www.cnblogs.com/lttlpp61007188/p/10969373.html

你可能感兴趣的文章
综合练习:词频统计
查看>>
BZOJ1026: [SCOI2009]windy数
查看>>
样板操作数
查看>>
64位UBUNTU下安装adobe reader后无法启动
查看>>
组件:slot插槽
查看>>
Nginx配置文件nginx.conf中文详解(转)
查看>>
POJ 1308 Is It A Tree?(并查集)
查看>>
N进制到M进制的转换问题
查看>>
利用sed把一行的文本文件改成每句一行
查看>>
Android应用开发:核心技术解析与最佳实践pdf
查看>>
python——爬虫
查看>>
孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库
查看>>
求一个字符串中最长回文子串的长度(承接上一个题目)
查看>>
简单权限管理系统原理浅析
查看>>
springIOC第一个课堂案例的实现
查看>>
求输入成绩的平均分
查看>>
php PDO (转载)
查看>>
wordpress自动截取文章摘要代码
查看>>
[置顶] 一名优秀的程序设计师是如何管理知识的?
查看>>
scanf和gets
查看>>