django 中间件

也就是说,每一个请求都是先通过中间件中的 process_request 函数,这个函数返回 None 或者 HttpResponse 对象,如果返回前者,继续处理其它中间件,如果返回一个 HttpResponse,就处理中止,返回到网页上。

 
1
2
3
4
MIDDLEWARE_CLASSES = (
    'zqxt.middleware.BlockedIpMiddleware',
    ...其它的中间件
)

Django 会从 MIDDLEWARE_CLASSES 中按照从上到下的顺序一个个执行中间件中的 process_request 函数,而其中 process_response 函数则是最前面的最后执行。


中间件
 
#项目 zqxt 文件名 zqxt/middleware.py
 
class BlockedIpMiddleware(object):
 
中间件继承object
class BlockedIpMiddleware(object):
    def process_request(self, request):
        if request.META['REMOTE_ADDR'in getattr(settings, "BLOCKED_IPS", []):
            return http.HttpResponseForbidden('<h1>Forbidden</h1>')
在def process_reqeuest当中定义,注意传入参数reqeust
 
 
 
 
 





原文地址:https://www.cnblogs.com/wuqingzangyue/p/5749431.html