Fixed #19262 -- Support cookie pickling in SimpleTemplateResponse
Refs #15863.
This commit is contained in:
parent
1b307d6c8f
commit
4d817b3887
|
@ -40,7 +40,7 @@ class SimpleTemplateResponse(HttpResponse):
|
|||
rendered, and that the pickled state only includes rendered
|
||||
data, not the data used to construct the response.
|
||||
"""
|
||||
obj_dict = self.__dict__.copy()
|
||||
obj_dict = super(SimpleTemplateResponse, self).__getstate__()
|
||||
if not self._is_rendered:
|
||||
raise ContentNotRenderedError('The response content must be '
|
||||
'rendered before it can be pickled.')
|
||||
|
|
|
@ -189,6 +189,21 @@ class SimpleTemplateResponseTest(TestCase):
|
|||
unpickled_response = pickle.loads(pickled_response)
|
||||
repickled_response = pickle.dumps(unpickled_response)
|
||||
|
||||
def test_pickling_cookie(self):
|
||||
response = SimpleTemplateResponse('first/test.html', {
|
||||
'value': 123,
|
||||
'fn': datetime.now,
|
||||
})
|
||||
|
||||
response.cookies['key'] = 'value'
|
||||
|
||||
response.render()
|
||||
pickled_response = pickle.dumps(response, pickle.HIGHEST_PROTOCOL)
|
||||
unpickled_response = pickle.loads(pickled_response)
|
||||
|
||||
self.assertEqual(unpickled_response.cookies['key'].value, 'value')
|
||||
|
||||
|
||||
@override_settings(
|
||||
TEMPLATE_CONTEXT_PROCESSORS=[test_processor_name],
|
||||
TEMPLATE_DIRS=(os.path.join(os.path.dirname(__file__),'templates')),
|
||||
|
|
Loading…
Reference in New Issue