Wagtail API的结果可以缓存还是可以设置“ Cache-Control”标头?

时间:2018-09-13 20:31:49

标签: django-rest-framework wagtail

我正在尝试从Wagtail缓存API视图之一。我已经搜索了缓存Django REST的方法,并通过在响应中注入Cache-Control找到了一种方法。 如此处所示:http://www.django-rest-framework.org/api-guide/responses/#standard-httpresponse-attributes

该方法不适用于Wagtail,因为串行器是Wagtail的一部分。有办法吗?

1 个答案:

答案 0 :(得分:3)

Wagtail API端点在wagtail.api.v2.endpoints(和其他位置,例如wagtail.images.api.v2.endpoints中定义,可以被子类化以提供自定义行为,例如在响应上设置其他标头。例如,添加缓存-控制PagesAPIEndpoint的详细信息视图的标题:

from wagtail.api.v2.endpoints import PagesAPIEndpoint

class CachedPagesAPIEndpoint(PagesAPIEndpoint):
    def detail_view(self, request, pk):
        response = super().detail_view(request, pk)
        response['Cache-Control'] = 'no-cache'
        return response

然后in your api.py,注册您的自定义CachedPagesAPIEndpoint来代替标准PagesAPIEndpoint