我仍然习惯于基于类的视图,虽然我有了一般的用途,但有些事情还是无法理解。我遵循的是一个教程,它基本上引导你完成动作,但往往忽略了模糊的细节,比如这段代码:
class LoanedBooksByUserListView(LoginRequiredMixin,generic.ListView):
"""Generic class-based view listing books on loan to current user."""
model = BookInstance
template_name ='books/bookinstance_list_borrowed_user.html'
paginate_by = 1
def get_queryset(self):
return BookInstance.objects.filter(
borrower=self.request.user
).filter(status__exact='o').order_by('due_back')
我得到模型、模板名和分页,它们是ListView类的属性,但我没有得到的是get_queryset部分,它在哪里执行?如下面的代码所示,它被称为“无处”。它回到哪里去了?我想我的第一个问题可以归结为“基于类的视图中的函数做什么?”在
^{2}$所以,有两个问题,第一,getqueryset回到了哪里,第二,是什么 书柜清单?它不是一个上下文变量,但似乎是被突然使用的,为什么这个变量是可用的?在
基于类的视图调用
get_queryset()
在视图的get()
方法中,我将展示一些来自django1.11的示例代码。在此方法中的
^{pr2}$ListView
类设置self.object_list = self.get_queryset()
,但是这并不能解释它在传递给模板的上下文中的何处设置它。如果我们快速浏览一下get_context_data()
:context
被分配了一个带有'object_list': queryset
的字典,因此当您试图访问模板中get_queryset
中的QuerySet
时,您应该访问object_list
。在关于基于类的泛型视图的Django文档中有一节介绍如何使用附加信息扩展上下文数据。https://docs.djangoproject.com/en/2.1/topics/class-based-views/generic-display/#dynamic-filtering
相关问题 更多 >
编程相关推荐