I'm trying to serve a gzipped version of a text/html page in Django, but Firefox is telling me there's a content encoding error.
NOTES:
- I realize this is not a best practice and I'm most likely going to use mod_gzip. This is just a learning exercise to understand what's going on.
- I know about the Django gzip middleware– it has problems with binary files.
Here's my code:
rendered_page = zlib.compress(template.render(context).encode('utf-8'))
response = HttpResponse(rendered_page)
response['Content-Encoding'] = 'gzip'
response['Content-Length'] = len(rendered_page)
return response
Am I missing something here? Is it possible that the content length is wrong? Are there additional headers I'm missing?
Thanks.
Best Answer
You could also simply use Django's GZip Middleware:
Either by enabling the middleware in settings.py by adding:
Or do it before you return a particular response. In your views.py, dec would be the handler for a certain url
NOTE: You should be certain you are not subject to side-channel attacks before using GZip middleware.
Also: