也就是说,每一个请求都是先通过中间件中的 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