中间件: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. 洛谷P2258 子矩阵 题解 状态压缩/枚举/动态规划

    作者:zifeiy 标签:状态压缩.枚举.动态规划 题目链接:https://www.luogu.org/problem/P2258 这道题目状态压缩是肯定的,我们需要用二进制来枚举状态. 江湖上有一 ...

  2. java什么是跨平台性?原理是什么?

    所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行. 实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行 ...

  3. HDU 5463

    题意:一个盒子有36个格子.每个格子可以装64个物品,搬运一个箱子是一次搬运,问最少到搬运次数 思路:直接求总需要多少个格子,然后去求盒子,这里求盒子呢有个小技巧,就是用ceil函数 #include ...

  4. 【React】 百度地图API

    百度地图 开发文档 :http://lbsyun.baidu.com/index.php?title=jspopular 调用接口 需要 内置加载一个 百度api文件    使用自己的ak  申请一个 ...

  5. C# 从 short 转 byte 方法

    本文告诉大家多个方法转换 short 和 byte 有简单的也有快的 快速简单的方法 static short ToShort(short byte1, short byte2) { return ( ...

  6. git 安装及基本配置

    git 基本上来说是开发者必备工具了,在服务器里没有 git 实在不太能说得过去.何况,没有 git 的话,面向github编程 从何说起,如同一个程序员断了左膀右臂. 你对流程熟悉后,只需要一分钟便 ...

  7. php连接数据库并创建数据库表

    先开启本地服务器 1.输入localhost/phpmyadmin 查看本地数据库是否安装 2.在本地服务器上建一个文件夹,里面建一个php文件(如test.php) 3.连接数据库 4.在浏览器上输 ...

  8. Linux内存页大小

    当使用内存时, 记住一个内存页是 PAGE_SIZE 字节, 不是 4KB. 假定页大小是 4KB 并且 硬编码这个值是一个 PC 程序员常见的错误, 相反, 被支持的平台显示页大小从 4 KB 到 ...

  9. 相似文本文档分析之SimHash算法

    Simhash算法: Simhash算法由Google的Charikar提出,是将一篇文档转化为n位的签名,通过比较签名的相似度来计算原文档的相似度.签名越相近,则文档越相近.因此,整个过程就不会涉及 ...

  10. 百度人脸识别集成错误:Build command failed. Error while executing process F:\dev\Android\Sdk\cmake\3.6.4111459\bin\cmake.exe with arguments

    大概是这么个错误 Build command failed. Error while executing process F:\dev\Android\Sdk\cmake\3.6.4111459\bi ...