Wagtail 重写继承RoutablePageMixin 的自定义Page 中的serve 方法

问题描述 投票:0回答:1

我在 wagtail 中有一个自定义 CacheMixin 类。

class CacheMixin:
    def serve(self, request, *args, **kwargs):
        response = super().serve(request, *args, **kwargs)
        # the rest of the cache implementation

这些基本上是我的自定义页面模型的样子:

class BasePage(CacheMixin, Page):
    #some fields

    def serve(self, request, *args, **kwargs):
        response = super().serve(request, *args, **kwargs)
        self._perform_some_ops()
        return response


class CustomPage(
    RoutablePageMixin,
    BasePage,
):
    # some fields

    @route('my_route/<int:category_id>')
    def my_route(self, category_id):
        # my route logic
        return self.render(
            request,
            extra_context={
                "key1": value_1,
                "key2": value_2
            },
            template="my_app/category.html"
        )

问题是

my_route/
未缓存。

如果我尝试像这样更改 CustomPage 类中的顺序:

CustomPage(BasePage,RoutablePageMixin)
,则路线无法访问。

我尝试覆盖

CustomPage
模型中的服务方法:

def serve(self, request, *args, **kwargs):
    super(RoutablePageMixin, self).serve(request, *args, **kwargs)
    return BasePage.serve(self, request, *args, **kwargs)

但是这条路线又无法到达。我在这里错过了什么? 我该如何解决?

wagtail
1个回答
0
投票

我通过重写 RoutablePageMixin 的 render 方法做了类似的事情。这是我的实施要点

© www.soinside.com 2019 - 2024. All rights reserved.