在我全新的 PyCharm 专业版中,我收到警告“‘WSGIRequest’的未解析属性引用‘user’”。警告出现在
MyClass.post()
的第一行(参见下面的代码)。
from django.views import generic
from django.db import models
from django.http.request import HttpRequest
from django.shortcuts import render
from django.contrib.auth.models import AbstractUser
class CustomUser( AbstractUser ):
emailname = models.CharField()
class Invoice( models.Model ):
posted = models.DateField()
class BaseView ( generic.DetailView ):
model = Invoice
def __int__( self, *args, **kwargs ):
super().__init__( *args, **kwargs )
# some more code
class MyClass( BaseView ):
def __int__( self, *args, **kwargs ):
super().__init__( *args, **kwargs )
# some more code
def post( self, request: HttpRequest, *args, **kwargs ):
context = { 'curr_user': request.user, } # <-- Unresolved attribute reference 'user' for class 'WSGIRequest'
# some more code
html_page = 'mypage.html'
return render( request, html_page, context )
user
是一个 CustomUser
对象。调试显示,user
是 CustomUser
中的已知属性,并且代码运行良好,context
中的“curr_user”是预期的属性。 request
的其他属性(如 request.path
或 request.REQUEST
)不会被警告。 Django 支持已启用。
我使用 PyCharm 2023.2.5(专业版),Windows 11
有人可以帮忙吗?我的错误是什么?
问候
request.user
不一定适用于所有请求(这取决于您是否有一个注入它的中间件),因此它并不显示为必然存在。
如果你需要的话,你当然可以添加一个
class HttpRequestWithUser(HttpRequest):
user: CustomUser
用于类型注释的类。