【问题标题】:wagtail def get_context and def servewagtail def get_context 和 def serve
【发布时间】:2022-11-11 21:02:15
【问题描述】:

我可以在页面的serve 方法中添加context,并在页面模板中获取上下文变量。我似乎无法在get_context 中添加上下文;或者,在页面模板中访问它。这让我很难过。

我想使用 get_context 函数将一个或两个变量添加到上下文中,并在页面模板中访问它。

# If request.user is authenticated AND is registered for this event
# set that in the context
# ###---THIS DOES SEEM TO ADD TO CONTEXT, OR
# ###---IF IT DOES, THEN CANNOT ACCESS IT IN THE TEMPLATE--###
# def get_context(self, request, *args, **kwargs):
#     # pdb.set_trace()
#     context = super(EventPage, self).get_context(request, *args, **kwargs)
#     if request.user.is_authenticated:
#         # pdb.set_trace()
#         for attendee in self.event.eventattendee_set.all():
#             if attendee.email == request.user.email:
#                 # user is an attendee for this event
#                 context["is_attendee"] = True
#                 break
#     context["hello"] = "hello"
#     return context

【问题讨论】:

    标签: wagtail


    【解决方案1】:

    您没有显示完整的页面模型定义,所以我假设它是针对EventPage。此外,您上面的代码已被注释掉。它在你的文件中被注释掉了吗?这可以解释为什么你没有得到任何东西。此外,您不必执行super(EventPage, self).get_context(request, *args, **kwargs)。你可以做super().get_context(request, *args, **kwargs)(虽然你也应该工作)。其他一切看起来都是正确的。

    【讨论】:

    • 它被注释掉了,因为我使用的是 serve 方法。是的,这是 EventPage 的一个实例,因此调用 Super 时的参数及其实例 self。
    【解决方案2】:

    我正在使用模板中的pageself 前缀通过get_context 访问添加的上下文数据。那是行不通的——至少它似乎没有。直接访问上下文变量,不带前缀,就可以了。有时,一个人只需要离开键盘。 get_context 一切顺利。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-04
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 2012-04-25
      相关资源
      最近更新 更多