summaryrefslogtreecommitdiff
path: root/django/template
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2023-04-12 09:46:18 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-04-12 18:52:43 +0200
commit173034b00589c083793d495e8b07e35be2cb1cf0 (patch)
treeb242f05f2c5118a0986f1ffb088341b6909f47fb /django/template
parent280ca147af9cdfce1ca9cb14cc3c5527ff6c7a02 (diff)
Refs #34482 -- Reverted "Fixed #32969 -- Fixed pickling HttpResponse and subclasses."
This reverts commit d7f5bfd241666c0a76e90208da1e9ef81aec44db. Thanks Márton Salomváry for the report.
Diffstat (limited to 'django/template')
-rw-r--r--django/template/response.py15
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,