解决 TypeError: BlockedIPSMiddleware() takes no arguments
在定义中间件类的时候出现了这个错误
环境介绍:
python3.8+Django2.2
创建这个中间件类是为了阻止某些IP地址访问你的服务器
就把某人拉入黑名单一样
你的应用下创建 middleware.py 文件
from django.http import HttpResponse
class BlockedIPSMiddleware(object):
"""中间件类"""
# 黑名单IP列表
EXCLUDE_IPS = ['192.168.119.1']
# 中间件函数
def process_view(self, request, view_func, *view_args, **view_kwargs):
"""视图函数调用之前会先调用此函数"""
# 获取对方访问服务器的IP地址
user_ip = request.META['REMOTE_ADDR']
# 进行校验,是否在你的黑名单中
if user_ip in BlockedIPSMiddleware.EXCLUDE_IPS:
# 如果在你的黑名单中,给予禁止
return HttpResponse('<h1>Forbidden</h1>')
在settings.py注册你的中间件类
纳闷 setting.py 里面怎么没有 MIDDLEWARE_CLASSES
干脆直接写在MIDDLEWARE里面吧
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'booktest.midd