我在 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)
但是这条路线又无法到达。我在这里错过了什么? 我该如何解决?
我通过重写 RoutablePageMixin 的 render 方法做了类似的事情。这是我的实施要点。