中间件:AOP中间件,在Django中内置了一些项目自带的中间件,那么中间件是什么呢

这里说明一下,一开始我也不太清楚中间件到底有什么用(大家也别急,下面会有详细的例子给大家解释)--------》

一、第一步:注册中间件文件

前两个是由我注册的,注册步骤类似Django中的绝大多数文件注册----------写上文件的根目录即可

二、第二步:写中间文件的切点函数----------------

  2.1举例--》指定ip用户抢票概率高

前面说到切点有很多,其中的   def process_request(self,request):就是用来解耦合的,通俗点就是举个例子:------设计一个函数时常会用到判断从而得到不同的输出,如果写在一起会显得很乱,于是用到

def process_request(self,request)  来解耦合,拆分出开,市面上的很多游戏都有新手必得奖励,这里的抽卡奖励就用到了类是中间件的东西,判断是新手则执行中间切点函数,跳过主程序的 一般抽卡函数,------------------------你是不是想到的什么。。。。。。。。。。。。。哈哈哈哈,非酋和欧皇的由来

#利用中间件来查看模拟抢手机的过程-------#模拟抢手机必中-----白名单---中间件
def get_phone(request):
if random.randrange(100)>95:
return HttpResponse("恭喜您,抢到小米20!")
return HttpResponse("正在排队....") 这是原函数的判断过程----------
class HelloMiddle(MiddlewareMixin):#---------------------------------第一个类
#---------------------------------打印ip
def process_request(self,request):
print(request.META.get("REMOTE_ADDR"))#统计访问服务器的ip可用于进行数据分析
#
# #模拟抢手机必中-----白名单
# ip=request.META.get("REMOTE_ADDR")
#----------------------------------------------------
# if request.path=="/App1/getphone/":
# if ip=="127.0.0.1":
# if random.randrange(100)>30:
# return HttpResponse("恭喜您免费抢到小米20")
这是中间件的函数,无形中便可区分开来,class类和def process_request()只需要写一次,不同的路由,统统用if判断即可

  2.2举例--》10秒内只能搜索一次,频率控制反爬

 #AOP控制搜索频率---10秒内只能搜索一次
def search(request):
return HttpResponse("这是你搜索到的种子资源!") ---------------------------------------------------------
# # AOP控制搜索频率---10秒内只能搜索一次
# if request.path=='/App1/search/':
# #通过Cache缓存----这里用ip作为唯一标识
# result=cache.get(ip)
# if result:
# return HttpResponse("您的访问过于频繁,请10秒后再试!")
# #不存在则设置cache
# cache.set(ip,ip,timeout=10)#第一个ip为设置的cache的名字,后一个为cache存的内容为ip

通过以上的我们可以得出结论,中间件用于解耦合很强大,非常方便,用的时候也要注意中间件的注册顺序哟!!!!

												

Django2.2 中间件的使用的更多相关文章

  1. Django2.2中间件详解

    中间件是 Django 用来处理请求和响应的钩子框架.它是一个轻量级的.底层级的"插件"系统,用于全局性地控制Django 的输入或输出,可以理解为内置的app或者小框架. 在dj ...

  2. Django2.0——中间件

    Django中间件middleware本质是一个类,在请求到返回的中间,类中不同的方法会在指定的时机中被触发.setting.py的变量MIDDLEWARE_CLASSES中的每一个元素都是中间件,且 ...

  3. Django2中文文档--目录及介绍部分

    Django2文档-文档结构 我是按照官方文档的格式进行翻译,所以格式根官方格式一致 如果大家发现哪些地方有问题可以联系我 2426525089@qq.com 或者加入QQ群跟我一起翻译,群号码: 2 ...

  4. 《玩转Django2.0》读书笔记-Django配置信息

    <玩转Django2.0>读书笔记-Django配置信息 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 项目配置是根据实际开发需求从而对整个Web框架编写相应配置信息. ...

  5. Django 详解 中间件Middleware

    Django中间件 还是涉及到django的请求生命周期.middle ware 请求穿过中间件到达url,再经过中间件返回给用户. 简单实例 django项目根目录新建一个Middle文件夹,再新建 ...

  6. Django2.0.1开发框架搭建

    1.使用vs2017创建空白django项目 2.右键python环境的env---安装python包  升级django到2.0.1和setuptools到38.4.0版本,具体环境如下: 3.配置 ...

  7. Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)

    Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项 参考:https://blog.csdn.net/weixin_40475396/article/detail ...

  8. centos7+python3.6+nginx+uwsgi+django2的搭建笔记

    公司需上线一套python编写的代码,需要给搭建一套环境  ,本次采用centos7+python3.6+nginx+uwsgi2+django2+mysql5.7的方式来进行搭建 写在部署前 在线上 ...

  9. 对django中间件的理解

    1. 什么是中间件(Django)? 对Django而言,中间件就是继承自MiddlewareMixin(位于django.utils.deprecation模块下)的类,该类对请求(request) ...

随机推荐

  1. excel中如何筛选功能的使用

    excel中如何筛选功能的使用 excel是一款数据处理工具,可以在众多的数据中找到想要的经过处理之后的数据,而最直接方便的功能就是筛选.请阅读下文,了解如何对数据进行筛选. 如下图所示的学生成绩中, ...

  2. jackson java转json hibernate懒加载造成的无限递归问题

    @JsonIgnore @JsonFilter @JsonBackReference @JsonManagedReference @JsonIgnoreProperties jackson中的@Jso ...

  3. Mysql怎样控制replace替换的次数?

    我想把“ABC是ABC”替换成“123是ABC”,也就是找出第一个ABC替换成123,MYSQL命令应该怎么写? UPDATE data SET body=REPLACE(body, 'ABC', ' ...

  4. H3C 衡量路由协议的主要指标

  5. Linux 内核热插拔操作

    热插拔事件的实际控制是通过一套存储于 kset_hotplug_ops 结构的方法完成. struct kset_hotplug_ops { int (*filter)(struct kset *ks ...

  6. Linux 内核bin+attribute 结构二进制属性

    sysfs 惯例调用所有属性来包含一个单个的人可读文本格式的值. 就是说, 只是偶然地很 少需要来创建能够处理大量二进制数据的属性. 这个需要真正地只出现在必须传递数据, 不可动地, 在用户空间和设备 ...

  7. Linux 内核接口

    USB 端点被绑在接口中. USB 接口只处理一类 USB 逻辑连接, 例如一个鼠标, 一个键盘, 或者一个音频流. 一些 USB 设备有多个接口, 例如一个 USB 扬声器可能有 2 个接口: 一个 ...

  8. 土旦:移动端 Vue+Vant 的Uploader 实现 :上传、压缩、旋转图片

    面向百度开发 html <van-uploader :after-read="onRead" accept="image/*"> <img s ...

  9. IdentityServer4 Resources

    原文地址 Resources 的定义 通常在系统中是顶一个需要保护的资源.这些资源可是用户的信息,比如身份信息或者邮箱地址,也可以是某些API的访问权限. Note: 可以通过C#的对象模型或者通过数 ...

  10. Centos7网络连接不上:Network is unreachable 解决方案

    有朋友的centos7装在虚拟机上挂起后在打开不能正常连接网络,我的也出现了这个问题,试着用dhclient重新分配一下地址,无奈系统提示dhclient正在运行,没办法只能试试其它办法,之后研究了一 ...