python中间件
每一个请求都是先通过中间件中的 process_request 函数,这个函数返回 None 或者 HttpResponse 对象,如果返回前者,继续处理其它中间件,如果返回一个 HttpResponse,就处理中止,返回到网页上。
中间件不用继承自任何类(可以继承 object ),下面一个中间件大概的样子:
1
2
3
4
5
6
|
class CommonMiddleware( object ): def process_request( self , request): return None def process_response( self , request, response): return response |
我觉得就是
这张图当中当网页的request请求进行处理的时候,设计一个函数对request进行处理叫做中间件
现在settings里面的MIDDLEWARE_CLASSES = 配置路径,app名,加模块名,加类名'todolist.middleware.Version',
然后再在定义的模块里面进行定义
classVersion(object):
def process_request(self,request): 请求处理过程
agent = request.META['HTTP_USER_AGENT'] 获取浏览器版本型号
result = re.findall('MSIE [5678]', agent) 匹配字符串
if len(result)>0:
renturn
render(request, 'warning.html') 可以用render方法渲染到另一个页面还可以写成跳转的形式,跳转到warning.html,这里需要判断,需要些url和views