################## 中间件 #######################
################## 中间件 #######################
################## 中间件 #######################
################## 中间件 #######################
################## 中间件 #######################
python-django框架-中间件
1,中间件
先说几个需求,
1,url的白名单, url=[ "XX"]
这个里面是一个用户可以访问的url,这就是一个权限的概念了,
2,登陆之后才能访问某些url, 之前使用的是装饰器,一个网站可能有一两千的url,这样加装饰器就不太好,所以使用中间件是非常不错的,
什么是中间件?
是一个轻量,低级别的插件系统,可以在全局范围内改变django的输入和输出,每一个中间件都负责做一些特定的功能
也就是每一个请求都会走这个中间件,
注意:
因为改变的是全局,所以要谨慎使用,使用不当会影响性能,
#######################################################
浏览器到django框架的时候,先经过一个wsgi,这个wsgi就是按照HTTP的协议的规则解析请求,
然后到url.py中,找对应关系,
然后去views.py中,找到对应的函数,这个函数需要模板,需要数据,
然后可能去读一个模板templates,html页面,
然后使用orm取数据,
然后返回给浏览器,也需要经过wsgi,这个还需要按照HTTP的协议,进行解析,然后输出,
----------
中间件就是经过wsgi之后就要经过中间件,这就是在全局影响django的请求和响应,
所以中间件多了不好,每次都经过,性能就会受到影响,
所以前面权限的例子,就是可以使用中间件的,这好像是一个过滤的功能一样,
比如验证是否登陆,如果没有登陆就提示登陆,登陆了就可以查看,这个也可以使用中间件
所以全网站级别的功能,就需要使用中间件,
------------------------
这个是一个比较进阶的东西,你不知道不影响你写什么东西,
---------------------
定义:在wsgi之后,在url.py之前,在全局,操作django请求和响应的模块,
###############################################
我们一直都在使用中间件,只是没有注意到而已,打开Django项目的Settings.py文件,MIDDLEWARE配置项。
后面再看,这个讲的也只是使用中间件做了一个登陆的验证问题,之前都是使用装饰器来做的验证,
原文地址:https://www.cnblogs.com/andy0816/p/12191281.html