类在 django 中没有"对象"成员


from django.http import HttpResponse
from .models import Destination
def index(request):
boards = Destination.objects.all()
boards_names = list()
for Destination in boards:
boards_names.append(Destination.destinationtext)
response_html = '<br>'.join(boards_names)
return HttpResponse(response_html)

我编写了这段代码只是为了练习 django 框架,但我通过 pylint 收到以下错误:

E1101:Class 'Destination' has no 'objects' member
E0601:Using variable 'Destination' before assignment

您有两个不同的问题,而不仅仅是您所说的一个:

E1101:Class 'Destination' has no 'objects' member:是一个警告pylint不知道我们特殊的 Django 变量。像pylint-django这样的 pylint 插件可能会解决问题。

E0601:Using variable 'Destination' before assignment:在代码的 for 循环中,您定义了一个名为Destination的变量。这不仅是不好的做法,因为 python 变量需要lowercase_underscore而且它会覆盖Destination,这就是导致此错误的原因。您可能想做这样的事情:

for d in boards:
# Or:
for destination in boards:

你在观点中写道:

forDestinationin boards:
# ...

这意味着 Python 将Destination视为局部变量,即您在分配之前使用的局部变量。

您可以在循环中重命名变量来解决问题,但实际上您可以使用.values_list(..)使其更优雅、更快

from django.http import HttpResponse
from .models import Destination
def index(request):
response_html = '<br>'.join(
Destination.objects.values_list('destinationtext', flat=True)
)
return HttpResponse(response_html)

尽管如此,我仍然不相信这能解决问题,因为destinationtext可能包含 HTML,然后它会在响应中混淆。通常最好使用模板。

相关内容

  • 没有找到相关文章

最新更新