Django中简单通用视图的extra_context函数

1 投票
1 回答
1583 浏览
提问于 2025-04-18 09:03

我有一个页面,上面显示了我的帖子列表,我还想在旁边加一个建议的侧边栏。我用了一种通用的列表视图来显示我的帖子,但我需要以某种方式传递建议,所以我用了extra_context这个东西。根据我看过的一些例子,这个方法应该可以工作,但在模板里并没有看到'suggestions'这个对象。

class PostList(generic.ListView):
    model = models.Post
    paginate_by = 10
    context_object_name = 'mj'
    def get_queryset(self):
        return models.Post.objects.filter(user = self.request.user)
    def extra_context(self):
        return {'suggestions':models.Pla.objects}

我对django不太熟悉,所以可能还有更好的方法来传递侧边栏的建议。也许可以通过包装视图函数来实现,因为我想要有建议。

1 个回答

1

基于类的视图和以前的基于函数的通用视图在处理额外上下文信息时有些不同。以前的方式是用 extra_context,而现在通常是通过自定义的 get_context_data 方法来实现,具体的做法可以参考文档:

https://docs.djangoproject.com/en/dev/topics/class-based-views/generic-display/#adding-extra-context

文档中的例子几乎和你想做的事情一模一样。你可能还想进一步参考这个例子,传入一个查询集(models.Pla.objects.all()),而不是直接使用管理器对象(models.Pla.objects)。

撰写回答