from django.http import HttpResponseNotAllowed, HttpResponseForbidden, HttpResponse, HttpResponseBadRequest
from django.core.urlresolvers import reverse
from django.core.cache import cache
class HttpResponseWrapper(HttpResponse):
- Wrap HttpResponse and make sure that the internal _is_string
- flag is updated when the _set_content method (via the content
+ Wrap HttpResponse and make sure that the internal
+ _is_string/_base_content_is_iter flag is updated when the
+ _set_content method (via the content property) is called
def _set_content(self, content):
- Set the _container and _is_string properties based on the
- type of the value parameter. This logic is in the construtor
- for HttpResponse, but doesn't get repeated when setting
- HttpResponse.content although this bug report (feature request)
- suggests that it should: http://code.djangoproject.com/ticket/9403
+ Set the _container and _is_string /
+ _base_content_is_iter properties based on the type of
+ the value parameter. This logic is in the construtor
+ for HttpResponse, but doesn't get repeated when
+ setting HttpResponse.content although this bug report
+ (feature request) suggests that it should:
+ http://code.djangoproject.com/ticket/9403
if not isinstance(content, basestring) and hasattr(content, '__iter__'):
self._container = content
- self._is_string = False
self._container = [content]
+ if django.VERSION >= (1, 4):
+ self._base_content_is_iter = not is_string
+ self._is_string = is_string
content = property(HttpResponse._get_content, _set_content)