通用视图在django中的工作原理如何?

时间:2015-06-21 20:58:29

标签: django django-generic-views

我想在博客中使用泛型类。一切都很好,我知道它是如何工作的,我喜欢它背后的想法。但我看到一个通用类只抓取一个或几个博客帖子并将它们发送到模板。 是否可以使用泛型类视图向模板添加更多数据?就像在博客索引页面中我最近将发表5篇文章。我也想向同一个模板发送一个民意调查。通用类视图可以实现吗?如果是(应该是),我应该阅读django文档的哪一部分?

更新 看看这段代码(来自django文档):

class IndexView(generic.ListView):
    template_name = 'polls/index.html'
    context_object_name = 'latest_question_list'

    def get_queryset(self):
        """Return the last five published questions."""
        return Question.objects.order_by('-pub_date')[:5]

以上代码将最新的5个民意调查发送到民意调查/ index.html。如果我想将一些额外的数据或信息发送到同一模板以向用户显示。像侧面板上的最新消息一样。但是在泛型类视图中没有地方可以添加新闻。索引视图类旨在显示最新的民意调查列表。没别的。

1 个答案:

答案 0 :(得分:2)

您可以使用get_context_data。以下是我在1个视图中使用2个应用程序的示例。

class MainPageView(ListView):
    model = MainPaige
    template_name = 'main/index.html'

    def get_context_data(self, **kwargs):
            ctx = super(MainPageView, self).get_context_data(**kwargs)
            ctx['main_page'] = MainPaige.objects.all()
            ctx['main_news'] = News.objects.order_by('-pub_date') [:5]
            return ctx