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:
parent
3eb58f0dd1
commit
e2f142030b
|
@ -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):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue