Python Django';s YearArchiveView通用日期视图

Python Django';s YearArchiveView通用日期视图,python,django,django-class-based-views,Python,Django,Django Class Based Views,在Django中,有一个名为的通用视图,其属性为 有人能给我解释一下为什么这个选项真的存在吗 如果我想要一个基于年份的queryset,那么很明显我需要一个对象列表,即使它只有一个对象,这难道不符合逻辑吗。 或者我在这里误解了什么make_object_list返回object_list下视图上下文中给定年份ArchiveView的所有对象。默认情况下,make_object_list为False,这将导致返回的上下文object_list为空 因此,在这一部分,理解这个问题有点棘手。但希望这能

在Django中,有一个名为的通用视图,其属性为

有人能给我解释一下为什么这个选项真的存在吗

如果我想要一个基于年份的queryset,那么很明显我需要一个对象列表,即使它只有一个对象,这难道不符合逻辑吗。 或者我在这里误解了什么
make_object_list
返回
object_list
下视图上下文中给定年份ArchiveView的所有对象。默认情况下,
make_object_list
为False,这将导致返回的上下文
object_list
为空

因此,在这一部分,理解这个问题有点棘手。但希望这能有所帮助(提示:看看真正有用的东西)

默认情况下,
YearArchiveView
将在上下文中返回以下内容:

  • 日期列表:一个日期查询集,返回包含对象的所有月份
  • 年份:给定年份的日期对象
  • 下一年:下一年第一天的日期对象
  • 上一年:上一年第一天的日期对象
在此列表中,您会注意到,返回时给定年份的queryset对象为空

制作对象列表 因此,从上面我们知道,默认情况下,上下文将返回许多与对象日期、当前年份、上一个和下一个相关的值,但不会从数据库返回实际的queryset对象

在YearArchiveView中将
make_object_list
设置为true,将导致给定年份的所有queryset对象通过上下文传回,以便在视图中使用

在模板中,queryset对象将在上下文
对象列表下可用

在给定YearArchiveView的模板中,然后可以使用:

{% for item in object_list %}
    <strong>item.title</strong> - {{ item.date }}
{% endfor %}
{%用于对象列表%中的项]
item.title-{{item.date}
{%endfor%}

除了@MattWritesCode reply之外,我想说的是,在一些用例中,您只对构建导航感兴趣,而不包括很多实际对象

我想象着要处理1000篇文章,就像大报纸一样。我很可能希望在支持分页的单独视图中显示实际内容(可能还有细粒度权限访问,例如公共帖子和付费墙后面的帖子)


好问题,我只是在猜测。由于querysets是懒惰的,我不认为这会带来很大的性能提升,但在某种程度上,这也是一个方面。我会对更多的意见感兴趣。

这对我现在来说是可以理解的,但我仍然需要努力才能完全理解它。还有一个问题在我身上产生了,那就是为什么其他的通用视图,比如MonthArchiveView和DayArchiveView,也没有这个属性?我相信有两个主要原因。首先,返回的数据量。其次,你更有可能每月或每天总结项目,而不是一年。