Login

Conditional Caching

Author:
Archatas
Posted:
September 9, 2009
Language:
Python
Version:
1.1
Score:
0 (after 0 ratings)

This trick is for caching a view only if it passes some condition, for example, if there are more than zero items in a list. The same methodology could be used for conditional applying of other decorators.

 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. Template tag - list punctuation for a list of items by shapiromatron 2 months, 2 weeks ago
  2. JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 2 months, 3 weeks ago
  3. Serializer factory with Django Rest Framework by julio 9 months, 2 weeks ago
  4. Image compression before saving the new model / work with JPG, PNG by Schleidens 10 months, 1 week ago
  5. Help text hyperlinks by sa2812 11 months ago

Comments

Please login first before commenting.