【问题标题】:Django generic view - clarification on extra_context property - github vs installed sourceDjango 通用视图 - 关于 extra_context 属性的说明 - github 与已安装的源
【发布时间】:2017-08-20 16:33:24
【问题描述】:

所以我在挖掘 Django 的源代码时遇到了这两个: views.generic.list.pyviews.generic.base.py

所以这是ContextMixinget_context_data 方法中base.py 的第26 行

if self.extra_context is not None:
    kwargs.update(self.extra_context)
return kwargs

MultipleObjectMixinlist.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


【解决方案1】:

我想我看到了一个关于 extra_context 的问题,它是关于 Djnago 1.5 或类似的东西,所以我假设该功能存在并被删除,这给我的印象是 master 分支落后于最新版本 但正如@knbk 指出的那样,这是一个新添加的(或者可能复活)功能。

所以,我想这可以解释一切。如果有人有更完整的答案,我很乐意接受:) 或者我会用我自己的答案来结束这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 2015-12-06
    • 2019-09-17
    相关资源
    最近更新 更多