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

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

1.中间件是发生在request和response 之间,都会经过中间键,

上述截图中的中间件都是django中的,我们也可以自己定义一个中间件,我们可以自己写一个类,但是必须继承MiddlewareMixin

需要导入

1
from 
django.utils.deprecation 
import 
MiddlewareMixin

 

1 from django.utils.deprecation import MiddlewareMixin 2 from django.shortcuts import HttpResponse 3  4 class Md1(MiddlewareMixin): 5  6     def process_request(self,request): 7         print("Md1请求") 8   9     def process_response(self,request,response):10         print("Md1返回")11         return response12 13 class Md2(MiddlewareMixin):14 15     def process_request(self,request):16         print("Md2请求")17         #return HttpResponse("Md2中断")18     def process_response(self,request,response):19         print("Md2返回")20         return response
Mymiddlewares

结果:

Md1请求Md2请求view函数...Md2返回Md1返回

如果当请求到达请求2的时候直接不符合条件返回,即return HttpResponse("Md2中断"),程序将把请求直接发给中间件2返回,然后依次返回到请求者,结果如下:

返回Md2中断的页面,后台打印如下:

Md1请求Md2请求Md2返回Md1返回

 

 
1 from django.utils.deprecation import MiddlewareMixin 2 from django.shortcuts import redirect,HttpResponse,render 3 class M1(MiddlewareMixin): 4     def process_request(self,request): 5         if request.path in ["/login/","/reg/"]: 6             print(request.META.get("REMOTE_ADDR")) 7             return None 8         if not request.user.is_authenticated: 9             return redirect("/login/")10 11 class M2(MiddlewareMixin):12     def process_request(self,request):13         if "128.0." in request.META.get("REMOTE_ADDR"):14             return redirect("/error/")15         else:16             return None
关于控制登录和限制ip

setting设置

 

'app01.utils.middleware.M1',

 

转载于:https://www.cnblogs.com/zhangqing979797/p/9893321.html

你可能感兴趣的文章
Python3下基于bs4和sqlalchemy的爬虫实现
查看>>
centos7 在docker swarm中运行Jenkins,利用gitlab的webhook触发自动部署脚本
查看>>
Idea下Python开发平台的搭建
查看>>
token令牌和jwt
查看>>
I2S接口介绍
查看>>
(原創) 如何設計一個數位相框? (SOC) (Quartus II) (SOPC Builder) (Nios II) (TRDB-LTM) (DE2-70)...
查看>>
/etc/profile文件内容
查看>>
量词 匹配优先与忽略优先
查看>>
一页纸IT项目管理:大道至简的实用管理沟通工具
查看>>
汽车知识:车内异味的清除方法
查看>>
IE6 7下绝对定位引发浮动元素神秘消失
查看>>
android - ADT本地配置、sdk配置
查看>>
I.MX6 dhcpcd 需要指定网卡
查看>>
前端自动化构建之Gulp的使用(学习笔记)
查看>>
js递归原理之return
查看>>
浏览器的回流和重绘及其优化方式
查看>>
centos配置ssh免密码登录后,仍提示输入密码
查看>>
gulp+browser-sync实现前端自动化刷新
查看>>
python学习笔记 --- 来看看 random_state 这个参数
查看>>
基于angular2实现用户登录并信息持久化的一些理解(三)
查看>>