Django通道错误:TypeError:object.\uuuu init\uuuuu()只接受一个参数(要初始化的实例)

Django通道错误:TypeError:object.\uuuu init\uuuuu()只接受一个参数(要初始化的实例),django,django-rest-framework,django-channels,Django,Django Rest Framework,Django Channels,我正在使用一个定制的JWT身份验证中间件来验证JWT 进口jwt 从urllib.parse导入parseqs 从channels.db导入数据库\u sync\u到\u async 从django.contrib.auth导入get\u user\u模型 从django.contrib.auth.models导入匿名用户 从django.conf导入设置 从rest\u framework\u simplejwt.tokens导入AccessToken @数据库\u同步\u到\u异步 def

我正在使用一个定制的JWT身份验证中间件来验证JWT

进口jwt 从urllib.parse导入parseqs 从channels.db导入数据库\u sync\u到\u async 从django.contrib.auth导入get\u user\u模型 从django.contrib.auth.models导入匿名用户 从django.conf导入设置 从rest\u framework\u simplejwt.tokens导入AccessToken @数据库\u同步\u到\u异步 def get_useruser_id: 用户=获取用户模型 尝试: user=user.objects.getid=user\u id 返回用户 除User.DoesNotExist外: 返回匿名用户 类令牌中间件: 从查询字符串获取用户ID的自定义中间件不安全。 定义初始自我,内部: 存储我们通过的ASGI应用程序 self.inner=内部 异步定义调用自身、作用域、接收、发送: 从查询字符串中查找用户还应该执行以下操作 检查它是否是有效的用户ID,或者范围[user]是否已经存在 密集的。 token=parseqsu作用域[query_string]。解码[token][0] AccessTokentoken.verify 有效负载=jwt.decodetoken,settings.SECRET_KEY,算法=['HS256'] 作用域[用户]=等待获取\u用户IntPayload[用户id] return wait self.innerdictscope,receive,send 我得到的错误类型是error:object.\uuuu init\uuuuuu只接受实例初始化的一个参数

我跟着那位官员


有人能告诉我问题到底出在哪里吗?

对于面临相同问题的人来说,问题实际上并不在中间件中。在我的案例中,问题出现在asgi.py中。我忘了对消费者调用.as_asgi方法

应用程序=协议类型路由器 { http:get_asgi_应用程序, 现在只使用HTTP。我们可以稍后添加其他协议。 websocket:TokenAuthMiddlewareStack URLRouter[ pathchat/,ChatConsumer.as_asgi, ] }
注意ChatConsumer上的as_asgi方法。我忽略了这一点,这最终让我认为isse存在于我的定制中间件中。

对于任何面临相同问题的人来说,问题实际上并不存在于中间件中。在我的案例中,问题出现在asgi.py中。我忘了对消费者调用.as_asgi方法

应用程序=协议类型路由器 { http:get_asgi_应用程序, 现在只使用HTTP。我们可以稍后添加其他协议。 websocket:TokenAuthMiddlewareStack URLRouter[ pathchat/,ChatConsumer.as_asgi, ] }
注意ChatConsumer上的as_asgi方法。我错过了这一点,这最终让我认为isse在我的定制中间件中。

范围周围的dict是怎么回事?@Melvyn是的,这没有任何意义。我很快就把它删除了,但这并没有解决这个问题。示波器周围的dict怎么了?@Melvyn是的,这没有任何意义。我很快就删除了它,但这并没有解决问题,这是新的3.0+协议。谢谢你分享根本原因,我相信你不会是最后一个碰到这个问题的人。是的,这是新的3.0+协议。谢谢你分享根本原因,我相信你不会是最后一个碰到这个问题的人。