diff options
Diffstat (limited to 'django/template/response.py')
-rw-r--r-- | django/template/response.py | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/django/template/response.py b/django/template/response.py index b4f0e171f1..c38b95e9de 100644 --- a/django/template/response.py +++ b/django/template/response.py @@ -8,9 +8,7 @@ class ContentNotRenderedError(Exception): class SimpleTemplateResponse(HttpResponse): - non_picklable_attrs = HttpResponse.non_picklable_attrs | frozenset( - ["template_name", "context_data", "_post_render_callbacks"] - ) + rendering_attrs = ["template_name", "context_data", "_post_render_callbacks"] def __init__( self, @@ -57,11 +55,16 @@ class SimpleTemplateResponse(HttpResponse): Raise an exception if trying to pickle an unrendered response. Pickle only rendered data, not the data used to construct the response. """ + obj_dict = self.__dict__.copy() if not self._is_rendered: raise ContentNotRenderedError( "The response content must be rendered before it can be pickled." ) - return super().__getstate__() + for attr in self.rendering_attrs: + if attr in obj_dict: + del obj_dict[attr] + + return obj_dict def resolve_template(self, template): """Accept a template object, path-to-template, or list of paths.""" @@ -142,9 +145,7 @@ class SimpleTemplateResponse(HttpResponse): class TemplateResponse(SimpleTemplateResponse): - non_picklable_attrs = SimpleTemplateResponse.non_picklable_attrs | frozenset( - ["_request"] - ) + rendering_attrs = SimpleTemplateResponse.rendering_attrs + ["_request"] def __init__( self, |