I have recently implemented Django's excellent cache framework. However from what I understand Django will not cache a view that is passed parameters in a get request. I have an Ajax view that is passed get parameters that I would like to cache for X seconds, what would be an easy way to do this?
In psuedo code I currently have a URL:
http://mysites/ajaxthing/?user=foo&items=10
I would like to cache any this url as long as it has the same get parameters.
I'm currently using the cache decorators in my view:
myview(stuff)
myview = cache_page(myview, 60 * 3)
I did read about django's vary headers but it went a little over my head, and I'm not even sure its the correct solution
This should be no longer an issue in Django 1.3+. See: https://docs.djangoproject.com/en/dev/topics/cache/#using-vary-headers
It appears that you no longer need to do anything more complicated than placing @cache_page([length of time]) above your View function you are trying to cache, irrespective of whether you have parameters in the URL.
For example, if you have a url like:
Your view function in views.py would look something like this:
a bit late, but you can use django-view-cache-utils for that.
Right, vary headers is not the correct solution, it's used when you want to cache based on client request headers like user-agent etc.
You'll need to use low-level API or template fragment caching. It depends on your views really.
With low-level API it looks something like this:
Yes, you can use django-view-cache-utils, here is code for your case: