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, | ||||
|             extra={ | ||||
|                 'status_code': 405, | ||||
|                 'request': self.request | ||||
|                 'request': request | ||||
|             } | ||||
|         ) | ||||
|         return http.HttpResponseNotAllowed(self._allowed_methods()) | ||||
| @@ -193,10 +193,10 @@ class RedirectView(View): | ||||
|             else: | ||||
|                 return http.HttpResponseRedirect(url) | ||||
|         else: | ||||
|             logger.warning('Gone: %s', self.request.path, | ||||
|             logger.warning('Gone: %s', request.path, | ||||
|                         extra={ | ||||
|                             'status_code': 410, | ||||
|                             'request': self.request | ||||
|                             'request': request | ||||
|                         }) | ||||
|             return http.HttpResponseGone() | ||||
|  | ||||
|   | ||||
| @@ -228,6 +228,15 @@ class ViewTest(unittest.TestCase): | ||||
|             self.assertNotIn(attribute, dir(bare_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): | ||||
|     urls = 'generic_views.urls' | ||||
| @@ -421,6 +430,15 @@ class RedirectViewTest(TestCase): | ||||
|         response = RedirectView.as_view(url='/bar/')(self.rf.request(PATH_INFO='/foo/')) | ||||
|         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): | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user