Wagtail Views:额外的背景

yan*_*nik 6 python django wagtail

我没有找到更新Wagtail CMS页面上下文的正确方法.

例如,我有我的主页模型:

class HomePage(Page):
    about = RichTextField(blank=True)
    date = models.DateField(auto_now=True)

    content_panels = Page.content_panels + [
        FieldPanel('about', classname="full")
    ]

    class Meta:
        verbose_name = "Homepage"
Run Code Online (Sandbox Code Playgroud)

我还希望在该页面上包含一些第三方信息.在我的情况下它的论坛.写一些ViewMixin会很棒,比如:

class ForumMixin(object):
    pass
    # add latest forums to context
Run Code Online (Sandbox Code Playgroud)

我可以通过编写我的Django CBV来做到这一点,但我真的想知道Wagtail Native Way.谢谢!

gas*_*man 15

您可以通过覆盖get_context页面模型上的方法来执行此操作:

class HomePage(Page):
    def get_context(self, request):
        context = super(HomePage, self).get_context(request)
        context['forums'] = Forum.objects.all()
        return context
Run Code Online (Sandbox Code Playgroud)

这使得变量forums在您的模板上可用.

  • 不是真的:-) 在 Wagtail 中,页面是知道如何呈现自己的 ORM 对象,因此视图逻辑和模型之间不可避免地会有一些交叉。当然,它不是传统的 MVC,但我相信它非常适合内容管理系统的用途。 (3认同)
  • 谢谢,但是您不觉得这有点愚蠢吗 - 将视图登录写入模型? (2认同)
  • 这不是我捍卫Wagtail设计决策的地方.问题是,将额外的上下文传递给模板的标准Wagtail约定是什么,这正是我在这里给你的.你可能认为这很难看,这绝对没问题 - 你非常欢迎寻找更适合你审美情感的替代方案:-) (2认同)