【问题标题】:How do you use get_context_data with TemplateView in Django [closed]如何在 Django 中使用 get_context_data 和 TemplateView [关闭]
【发布时间】:2011-12-23 07:57:27
【问题描述】:

我正在尝试做这样的事情:

class AboutView(TemplateView):
    template_name = 'about.html'

    def get_context_data(self, **kwargs):
        context = super(AboutView, self).get_context_data(**kwargs)
        context['dahl_books'] = Books.objects.filter(author="Dahl')

当我尝试像这样在我的模板中访问 dahl_books 时:

{% for book in dahl_books %}

dahl_books 在模板上下文中不可用,即使 Books QuerySet 返回了非零数量的书籍。 ....我在我的模板或get_context_data 中做错了吗?

【问题讨论】:

  • 这个问题非常有帮助,我希望我能投票一百次......我一直在寻找将重新定义的 get_context_data 显示到模板的方法,但是很难是时候找到它了……非常感谢! (而且我不同意近距离投票——这是一个非常重要的问题)。
  • 我发现这个新功能很有趣:reinout.vanrees.org/weblog/2014/05/19/context.html
  • 我同意@TimS。除了可能只是投票 10 次,因为那是关于我看过多少帖子试图弄清楚如何在没有明确答案的情况下访问我的上下文变量。

标签: django django-templates django-views django-class-based-views


【解决方案1】:

我无法测试它,但我打赌你需要

return context

get_context_data 的末尾:)

【讨论】:

  • 我有一个跟进,我可以将上下文声明为类变量而不是本地变量并返回它吗?
  • 您必须将其用作类变量,但您可以根据需要获取上下文数据。只需意识到 django 会查找 get_context_data,因此您必须覆盖 django 在您的 get 和 post 方法中查找它的方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-29
  • 1970-01-01
  • 2014-10-09
相关资源
最近更新 更多