浅谈中间件 | Django开发
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈中间件 | Django开发相关的知识,希望对你有一定的参考价值。
中间件 1.什么是中间件? # 介于Django请求和响应的处理过程,修改Django的输入输出的底层插件; 2.怎么使用中间件? 1.应用中创建middleware.py # 定义类 class ForbiddenIpsMiddleware(object): pass # 类里包含5个内置方法,针对不同的时刻; # 下面也是中间件方法执行的顺序; 1.__init__() # 服务器响应第一个请求时调用,确定是否使用中间件 2.process_request(request) # 处理请求前调用(匹配视图前) 3.process_view(request,view_func,*args,**kwargs) # 处理视图前调用 4.process_exception(request,exception) # 视图抛出异常时调用 5.process_template_response() # 仅用于模板响应 6.process_response(request, response) # 响应返回浏览器之前调用 2.将建立的中间件添加到配置文件中 MIDDLEWARE_CLASSES = ( ... ‘应用名.middleware.ForbiddenIpsMiddleware‘, ) 3.中间件使用案例 1.禁止IP访问 class ForbiddenIpsMiddleware(object): def process_request(self, request): # 获取访问网站的用户IP remote_addr = request.META[‘REMOTE_ADDR‘] # 列出禁止访问的用户IP forbidden_addr = [‘192...‘, ‘192...‘] # 判断是否禁止访问的用户 if remote_addr in forbidden_addr: return HttpResponse(‘<h1>不给访问</h1>‘) 2.注册并登陆成功之后返回上次浏览页面 # 这里需要排除上次浏览的是有关用户中心的页面; # 怎么记住上次浏览的页面? # 在访问视图之后将url写到cookie里; class RecordUrlMiddleware(object): def process_response(self, request, response): exclude_urls = [ reverse(‘users:login‘), ... ] if request.path not in exclude_urls and resposne.status_code==200: set_cookie(response, ‘pre_url‘, request.get_full_path()) return response
以上是关于浅谈中间件 | Django开发的主要内容,如果未能解决你的问题,请参考以下文章
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段