Python Django Rest框架缓存头

Python Django Rest框架缓存头,python,django,caching,django-rest-framework,cdn,Python,Django,Caching,Django Rest Framework,Cdn,我试图在CDN中缓存一些DRFAPI调用。我需要以下标头缓存控制:public,max age=XXXX 当您使用传统的django模板时,这非常简单,您只需添加@cache_page()@cache_control(public=True)装饰器,但对于DRF,我找不到任何类似的装饰器。内存缓存中有很多内容,我已经准备好了,但是我真的很想让CDN一起从我的服务器上卸下这些负载,我想缓存生成的查询集 如果这对任何事情都重要,我也会使用ModelViewSet: class EventViewSe

我试图在CDN中缓存一些DRFAPI调用。我需要以下标头缓存控制:public,max age=XXXX

当您使用传统的django模板时,这非常简单,您只需添加@cache_page()@cache_control(public=True)装饰器,但对于DRF,我找不到任何类似的装饰器。内存缓存中有很多内容,我已经准备好了,但是我真的很想让CDN一起从我的服务器上卸下这些负载,我想缓存生成的查询集

如果这对任何事情都重要,我也会使用ModelViewSet:

class EventViewSet(viewsets.ModelViewSet):

    serializer_class = EventViewSet
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
    pagination_class = pagination.LimitOffsetPagination
    filter_backends = (filters.DjangoFilterBackend, filters.SearchFilter,)
    filter_class = EventFilter
    search_fields = ('name','city','state')

    def get_queryset(self):

更新:我从未在Django或Django Rest框架中解决过这个问题。我最终在我们的nginx conf文件中设置了头文件

您是否尝试过:

from django.utils.decorators import method_decorator
from django.views.decorators.cache import cache_control

class EventViewSet(viewsets.ModelViewSet):

    @method_decorator(cache_control(private=False, max_age=xxxx)
    def dispatch(self, request, *args, **kwargs):
        return super(EventViewSet, self).dispatch(request, *args, **kwargs)

@method\u decorator
。当提供了
name
参数时,它将在该类的实例中包装该命名方法。你想要的东西大致如下:

来自django.utils.decorators的
导入方法\u decorator
从django.views.decorators.cache导入cache\u控件
@方法装饰器(缓存控制(public=True,max\u age=xxxx),name='dispatch')
类EventViewSet(ViewSet.ModelViewSet):
...