django 中用于简单通用视图的 extra_context 函数

Posted

技术标签:

【中文标题】django 中用于简单通用视图的 extra_context 函数【英文标题】:extra_context function for simple generic view in django 【发布时间】:2014-06-08 19:10:18 【问题描述】:

我有我的页面,其中有我的帖子列表,我还希望有带有建议的侧边栏。我为我的帖子使用了通用 ListView,并且需要以某种方式传递建议,所以我使用了 extra_context,根据我读过的几个例子,它应该(?)像那样工作,但在模板中没有“建议”对象。

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】:

基于类的视图不像旧的基于函数的通用视图那样使用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)。

【讨论】:

以上是关于django 中用于简单通用视图的 extra_context 函数的主要内容,如果未能解决你的问题,请参考以下文章

django 通用(类)视图中的多个表单类

Django 中的自定义与通用视图

基于 Django 类的视图和通用视图详细信息使用

5 第一个Django第4部分(表单和通用视图)

从 Django 中基于类的通用视图将 request.user 对象发送到 ModelForm

从Django中基于类的通用视图向ModelForm发送request.user对象