Conditional Caching

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# ...
from django.views.decorators.cache import cache_page

def optionally_cached_view(request, *args, **kwargs):
    # ...
    condition = ...
    response = HttpResponse(...)
    f = lambda request, *args, **kwargs: response
    if condition:
        cached_f = cache_page(f, 60*15)
        return cached_f(request, *args, **kwargs)
    return response

# for comparison, there are analogous examples of uncached and strictly-cached views: 

def uncached_view(request, *args, **kwargs):
    # ...
    return HttpResponse(...)

def cached_view(request, *args, **kwargs):
    # ...
    return HttpResponse(...)
cached_view = cache_page(cached_view, 60*15)

More like this

  1. New view decorator to only cache pages for anonymous users by vaughnkoch 1 year, 4 months ago
  2. Decorator to logout user based on a test and/or redirect to another url by vemubalu 1 year, 2 months ago
  3. Language aware cache decorator by bartTC 2 years, 9 months ago
  4. Cache Decorator by ericmoritz 3 years, 2 months ago
  5. Cache view by user (and anonymous) by rafaelsdm 5 months, 2 weeks ago

Comments

(Forgotten your password?)