【Django 踩坑】中间件 报错: TypeError: object() takes no parameters 可以这样解决

在使用Django中间件时遇到TypeError: object() takes no parameters的问题。原因是Django版本更新,中间件类需接收get_response参数。解决方式包括在中间件类中定义带get_response参数的__init__和__call__函数,或者使用MiddlewareMixin以保持兼容性。
摘要由CSDN通过智能技术生成

 

使用中间件时,报错 TypeError: object() takes no parameters.

 

原始代码:(实现禁止某些ip的浏览器访问

from django.http import HttpResponse


class BlockedIPSMiddleware(object):
    '''中间件类'''
    EXCLUDE_IPS = ['192.168.43.28']  # 禁止访问的地址列表
    def process_view(self, request, view_func, *view_args, **view_kwargs):
        '''视图函数调用之前会调用'''
        user_ip = request.META['REMOTE_ADDR']
        print(user_ip)
        if user_ip in BlockedIPSMiddleware.EXCLUDE_IPS:   # 运行验证时,启动服务时指明ip,设置ALLOWED_HOSTS = ['*']
            return HttpResponse('<h1>Forbidden</h1>')

在正确注册激活中间件组件的前提下,报错:TypeError: object() takes no parameters.

 

原因:Dj

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值