在学习Django2框架过程中,中间件配置与1版本不同。
出错的代码:
from django.http import HttpResponse
class BlockedIPSMiddleware(object):
"""中间件类"""
# 进制IP列表
EXCLUDE_IPS = ['192.168.1.105']
def process_view(self, request, view_func, *view_args, **view_kwargs):
"""视图函数调用之前会被调用"""
user_ip = request.META['REMOTE_ADDR']
if user_ip in BlockedIPSMiddleware.EXCLUDE_IPS:
return HttpResponse('<h1>Forbidden</h1>')
报错:
TypeError: BlockedIPSMiddleware() takes no arguments
查阅资料修改代码:
from django.http import HttpResponse
from django.utils.deprecation import MiddlewareMixin
class BlockedIPSMiddleware(MiddlewareMixin):
"""中间件类"""
# 进制IP列表
EXCLUDE_IPS = ['192.168.1.105']
def process_view(self, request, view_func, *view_args, **view_kwargs):
"""视图函数调用之前会被调用"""
user_ip = request.META['REMOTE_ADDR']
if user_ip in BlockedIPSMiddleware.EXCLUDE_IPS:
return HttpResponse('<h1>Forbidden</h1>')