pythondjangoheaderhttp-status-code-304

How to do I integrate a 304 in Django?


When a user requests the same page, with the same data...I'd like Django to return a 304, so that the browser doesn't have to load the page all over again.

I'm new to this. How can this be done?

Thanks.


Solution

  • There's extensive description in Django documentation: Conditional view processing

    Following tools are particularly useful:

    1. @last_modified and @etag view decorators. You supply them with a function to compute the value from request and everything else is done automatically.
    2. django.middleware.http.ConditionalGetMiddleware -- it generates required ETag and returns 304 if there's a cache hit, but this still takes server time to generate full HTML and only network time is saved. Still very good for one-line configuration change.