Django HttpRequest 类型提示/注释问题

问题描述 投票:0回答:1
def my_func(request: HttpRequest) -> str:
  return request.user.email

在 PyCharm 中向我发出警告,指出

user
不是已定义的属性。然而写成
request: HttpRequest()
删除了这个警告,并在建议中给了我正确的参数。有人可以解释为什么会发生这种情况,以及我是否做错了什么?

我正在从

django.http
导入 HttpRequest。

python django pycharm python-typing
1个回答
0
投票

request: HttpRequest()
不是有效的类型提示。相反,
request: HttpRequest
会是这样,所以无需创建
HttpRequest
的实例。

.user
是稍后添加到由
django.contrib.auth.middleware.AuthenticationMiddleware
添加的请求的对象。因此它不是
HttpRequest
的一部分。

如果启用了中间件,PyCharm 等高级 IDE 将识别出在

request.user
函数中设置了
AuthenticationMiddleware.process_request(self, request)

© www.soinside.com 2019 - 2024. All rights reserved.