Динамическое управление максимальным возрастом кэша при запросе в Django

В Django я могу использовать что-то вроде этого для управления максимальным возрастом кэша для запроса:

from django.views.decorators.cache import cache_control

@cache_control(max_age=3600)
def my_view(request):
    # ...

Как я могу установить другой max_age значение внутри функции представления, так что оно может зависеть от того, что request содержание есть?

Пример:

def my_view(request):
    if is_good_to_cache(request):
        # set max_age to 36000
    else:
        # set max_age to 42 
    # ... 

1 ответ

Решение

Как cache_control пользуется patch_cache_control внутренне, можно прямо поставить:

from django.utils.cache import patch_cache_control

def my_view(request):
    if is_good_to_cache(request):
        max_age = 36000
    else:
        max_age = 42 
    resp = render(...)
    patch_cache_control(resp, max_age=max_age)
    return resp
Другие вопросы по тегам