Python 更改后类函数不';行不通
在将有关注释的函数从ContentDetailView剪切到IndexView之后,我无法运行我的服务器,而且它无法工作Python 更改后类函数不';行不通,python,django,Python,Django,在将有关注释的函数从ContentDetailView剪切到IndexView之后,我无法运行我的服务器,而且它无法工作 class IndexView(AllAdsViewMixin, ListView): model = UserContent template_name = 'user_content/list.html' context_object_name = 'usercontent' def get_queryset(self): """Return the last
class IndexView(AllAdsViewMixin, ListView):
model = UserContent
template_name = 'user_content/list.html'
context_object_name = 'usercontent'
def get_queryset(self):
"""Return the last all five published contents"""
return UserContent.objects.filter(state='1').order_by('-published')[:5]
def get_context_data(self, **kwargs):
content_type = self.object.get_content_type
initial_data = {
'content_type': content_type,
'object_id': self.object.id,
}
comment_form = CommentForm(initial=initial_data)
comments = Comment.objects.filter(
content_type=content_type,
object_id=self.object.id
)
context = super(IndexView, self).get_context_data(**kwargs)
context['comments'] = comments
context['comment_form'] = comment_form
return context
def post(self, request, **kwargs):
self.object = self.get_object()
content_type = self.object.get_content_type
comment_form = CommentForm(request.POST)
if comment_form.is_valid():
content_data = comment_form.cleaned_data.get('content')
parent_obj = None
try:
parent_id = int(request.POST.get('parent_id'))
except:
parent_id = None
if parent_id:
parent_qs = Comment.objects.filter(parent__id=parent_id)
if parent_qs.exists() and parent_qs.count() == 1:
parent_obj = parent_qs.first()
new_comment, created = Comment.objects.get_or_create(
user=request.user,
content_type=content_type,
object_id=self.object.id,
content=content_data,
parent=parent_obj
)
return self.get(request, **kwargs)
错误:
'IndexView' object has no attribute 'object'
有人能帮我吗
当函数在ContentDetailView类中时,它可以工作。ContentDetailView类具有相同的模型、模板名称和上下文对象名称。您的
ContentDetailView
类继承自DetailView
,但您的IndexView
继承自ListView
如果您查看的文档,您可以看到没有名为get\u object()
的方法。如文件所述
列表视图呈现一些对象列表,这些对象由self.model
或self.queryset
设置。
self.queryset
实际上可以是项目的任意iterable,而不仅仅是一个queryset
因此,您在视图中引用的self.object
不存在
但在这种情况下,如果你看一下文件
DetailView渲染对象的“细节”视图
默认情况下,这是从self.queryset
中查找的模型实例,但是
视图将通过覆盖self.get\u object()
支持显示任何对象
您在索引视图中实现的逻辑显然是错误的。
您需要先查看文档。首先,“它不起作用”不是一个有用的描述,请参阅。那么列表视图的“对象”是什么?当对象是详细视图时,它是什么?函数def get_context_data和def_post在ContentDetailView类中。现在我需要把这个函数放到IndexView类中。最后它不起作用了。我粘贴context_object_name='object'时出现了这个错误,我是初学者,不知道该怎么做。对不起,我的能力不够,英语很差。