中间件: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. java什么是跨平台性?原理是什么?

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

  2. 指针版的PStash(用一个void指针数组, 来保存存入元素的地址) 附模板化实现 p321

    由容器PStash的使用者,负责清除容器中的所有指针.所以用户必须记住放到容器中的是什么类型,在取出时,把取出的void指针转换成对应的类型指针,然后 'delete 转换后的对象指针',才能在清除时 ...

  3. 2018-2-13-WPF-DelegateCommand-出现Specified-cast-is-not-valid

    title author date CreateTime categories WPF DelegateCommand 出现Specified cast is not valid lindexi 20 ...

  4. centos7.0 可以访问HTML文件,不能访问PHP文件,因为php-fpm没有扩展包

    解决方法 :https://blog.csdn.net/ityang_/article/details/53980190 nginx调用PHP有sock方式和端口方式 1.确认nginx已经调用了ph ...

  5. Python--day40--全局解释器锁

    1,起一百个线程和起一百个进程所花的时间对比(开启效率的较量): import time from threading import Thread from multiprocessing impor ...

  6. Vue 各个阶段生命周期函数

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. requires php ~7.1 -> your PHP version (7.0.18) does not satisfy that requirement

    一个大兄弟本地用了 PHP 7.1 进行开发,而我本地是 PHP 7.0, 于是悲剧发生了. composer install 之后报错 Loading composer repositories w ...

  8. QuartusII 13.0的完美破解

    网络上破解QuartusII 13.0软件的方法都不行,最后经过本人总结测试(独创),最终实现了QuartusII 13.0的破解,破解方法如下: 网上常规操作之后,会得到一个“license.dat ...

  9. P1017 聪聪排数字

    题目描述 今天聪聪收到了n张卡片,他需要给他们从小到大排序. 输入格式 输入的第一行包含一个整数 \(n(1 \le n \le 10^3)\) . 输入的第二行包含 \(n\) 个正整数,以空格间隔 ...

  10. Linux 线程实现机制分析 Linux 线程实现机制分析 Linux 线程模型的比较:LinuxThreads 和 NPTL

    Linux 线程实现机制分析 Linux 线程实现机制分析  Linux 线程模型的比较:LinuxThreads 和 NPTL http://www.ibm.com/developerworks/c ...