# ...
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)