【发布时间】:2017-08-20 16:33:24
【问题描述】:
所以我在挖掘 Django 的源代码时遇到了这两个:
views.generic.list.py 和 views.generic.base.py
所以这是ContextMixin 的get_context_data 方法中base.py 的第26 行
if self.extra_context is not None:
kwargs.update(self.extra_context)
return kwargs
MultipleObjectMixin(list.py 中的第 9 行)继承 ContextMixin 并在覆盖的get_context_data 方法中调用父类的方法(list.py 中的第 136 行)
因此,extra_context 变量应该可以工作,并向使用MultipleObjectMixin 的类中传递给模板引擎的字典添加额外的上下文。
但是我查找的问题表明 extra_context 不再受支持,我运行了一个不起作用的代码,我不得不覆盖 get_context_data 以获得我想要的东西,有人对此有任何解释吗?
附言 我检查了我系统上安装的源代码,它与 github 代码不同,所以我现在的问题是为什么存储库落后于最新发布的版本?
【问题讨论】:
-
您正在链接到主分支(它将成为 Django 2.0)。您应该查看您正在使用的特定版本的标签,例如1.11.
-
我一直在使用通用视图(对它们进行子类化、添加 mixins 等),但没有看到这一点。它一定是新的东西。但是我不能经常想到我只将在编译时已知的内容添加到上下文中。所以无论如何覆盖 get_context_data 更有意义。
-
ContextMixin 的
extra_context被添加到了当前的master 中just over a month ago。
标签: django django-generic-views