mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #21564 -- Use local request object when possible in generic views.
Thanks to trac user adepue for the report and original patch.
This commit is contained in:
		| @@ -90,7 +90,7 @@ class View(object): | |||||||
|         logger.warning('Method Not Allowed (%s): %s', request.method, request.path, |         logger.warning('Method Not Allowed (%s): %s', request.method, request.path, | ||||||
|             extra={ |             extra={ | ||||||
|                 'status_code': 405, |                 'status_code': 405, | ||||||
|                 'request': self.request |                 'request': request | ||||||
|             } |             } | ||||||
|         ) |         ) | ||||||
|         return http.HttpResponseNotAllowed(self._allowed_methods()) |         return http.HttpResponseNotAllowed(self._allowed_methods()) | ||||||
| @@ -193,10 +193,10 @@ class RedirectView(View): | |||||||
|             else: |             else: | ||||||
|                 return http.HttpResponseRedirect(url) |                 return http.HttpResponseRedirect(url) | ||||||
|         else: |         else: | ||||||
|             logger.warning('Gone: %s', self.request.path, |             logger.warning('Gone: %s', request.path, | ||||||
|                         extra={ |                         extra={ | ||||||
|                             'status_code': 410, |                             'status_code': 410, | ||||||
|                             'request': self.request |                             'request': request | ||||||
|                         }) |                         }) | ||||||
|             return http.HttpResponseGone() |             return http.HttpResponseGone() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -228,6 +228,15 @@ class ViewTest(unittest.TestCase): | |||||||
|             self.assertNotIn(attribute, dir(bare_view)) |             self.assertNotIn(attribute, dir(bare_view)) | ||||||
|             self.assertIn(attribute, dir(view)) |             self.assertIn(attribute, dir(view)) | ||||||
|  |  | ||||||
|  |     def test_direct_instantiation(self): | ||||||
|  |         """ | ||||||
|  |         It should be possible to use the view by directly instantiating it | ||||||
|  |         without going through .as_view() (#21564). | ||||||
|  |         """ | ||||||
|  |         view = PostOnlyView() | ||||||
|  |         response = view.dispatch(self.rf.head('/')) | ||||||
|  |         self.assertEqual(response.status_code, 405) | ||||||
|  |  | ||||||
|  |  | ||||||
| class TemplateViewTest(TestCase): | class TemplateViewTest(TestCase): | ||||||
|     urls = 'generic_views.urls' |     urls = 'generic_views.urls' | ||||||
| @@ -421,6 +430,15 @@ class RedirectViewTest(TestCase): | |||||||
|         response = RedirectView.as_view(url='/bar/')(self.rf.request(PATH_INFO='/foo/')) |         response = RedirectView.as_view(url='/bar/')(self.rf.request(PATH_INFO='/foo/')) | ||||||
|         self.assertEqual(response.status_code, 301) |         self.assertEqual(response.status_code, 301) | ||||||
|  |  | ||||||
|  |     def test_direct_instantiation(self): | ||||||
|  |         """ | ||||||
|  |         It should be possible to use the view without going through .as_view() | ||||||
|  |         (#21564). | ||||||
|  |         """ | ||||||
|  |         view = RedirectView() | ||||||
|  |         response = view.dispatch(self.rf.head('/foo/')) | ||||||
|  |         self.assertEqual(response.status_code, 410) | ||||||
|  |  | ||||||
|  |  | ||||||
| class GetContextDataTest(unittest.TestCase): | class GetContextDataTest(unittest.TestCase): | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user