在django中包含泛型视图-如何以正确的方式进行?

在django中包含泛型视图-如何以正确的方式进行?,django,django-views,django-generic-views,Django,Django Views,Django Generic Views,我有一个活动组织者网站的主页和关于网页的TemplateView。现在,我想在两个模板中都包含一个模板,其中包含接下来三个事件的列表,如下所示: {% include "next-events.html"%} 由于这个模板应该包含在这两个页面中,所以我考虑只为下一个事件编写一个ListView,并将其包含在我的主页和关于视图中 class NextEventsView(ListView): """ a preview of the next events """ queryse

我有一个活动组织者网站的主页和关于网页的TemplateView。现在,我想在两个模板中都包含一个模板,其中包含接下来三个事件的列表,如下所示:

{% include "next-events.html"%}
由于这个模板应该包含在这两个页面中,所以我考虑只为下一个事件编写一个ListView,并将其包含在我的主页和关于视图中

class NextEventsView(ListView):
    """ a preview of the next events """
    queryset = Event.objects.filter(date__gte=datetime.date.today()).order_by('date')[:3]
    context_object_name = 'next_events'

class HomePageView(TemplateView, NextEventsView):
    template_name = "home/home.html"

class AboutPageView(TemplateView, NextEventsView):
    template_name = "home/about.html"
但是我还没有完全理解ListView泛型视图是如何获取其对象列表的。如果像这样包含,则会出现以下错误:

AttributeError: 'HomePageView' object has no attribute 'object_list'
这可以通过向HomePageView添加对象列表来解决,但这不是正确的解决方案

有人能解释一下,如何以正确的方式进行这样的包含吗


提前谢谢

您错误地列出了超类;ListView中的某些方法比TemplateView中的方法更为具体,但由于后者首先列出,因此将在那里找到这些方法

然而,似乎根本不需要从TemplateView继承。ListView已经存在,并且允许您设置模板名称。只需从继承中删除TemplateView