【发布时间】:2021-06-24 19:33:28
【问题描述】:
我正在 Django 中学习基于类的视图。我正在阅读 Django 文档并阅读了有关 queryset 属性和 get_queryset() 方法的信息。当用谷歌搜索它们时,我发现了这个answer。
我尝试使用我的代码复制结果:
class IndexView(generic.ListView):
template_name = 'polls/index.html'
context_object_name = 'latest_question_list'
def get_queryset(self):
return Question.objects.order_by('-pub_date')[:2]
class IndexView2(generic.ListView):
template_name = 'polls/index2.html'
context_object_name = 'latest_question_list2'
queryset = Question.objects.all()
在回答中提到,当您设置查询集时,查询集仅在您启动服务器时创建一次。另一方面,每个请求都会调用 get_queryset 方法。
但是我能够在数据库中插入问题并且它们在页面 index2.html 中可用而无需重新启动,我能够更改数据库并且刷新页面后更改反映在页面 index2.html 上。
我进一步搜索并找到了这个link。在 DRF 网站中,提到查询集将被评估一次,这些结果将被缓存以供所有后续请求使用。
你能指出我哪里出错了吗?我缺少什么链接?
【问题讨论】:
标签: python django django-class-based-views