Fixed #15688 - Generic views should provide a HEAD implementation

Thanks to j4mie for the report and patch!

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16095 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Luke Plant 2011-04-23 15:10:51 +00:00
parent 065e6b6153
commit f4c808b7f5
2 changed files with 17 additions and 0 deletions

View File

@ -44,6 +44,8 @@ class View(object):
def view(request, *args, **kwargs): def view(request, *args, **kwargs):
self = cls(**initkwargs) self = cls(**initkwargs)
if hasattr(self, 'get') and not hasattr(self, 'head'):
self.head = self.get
return self.dispatch(request, *args, **kwargs) return self.dispatch(request, *args, **kwargs)
# take name and docstring from class # take name and docstring from class

View File

@ -101,6 +101,14 @@ class ViewTest(unittest.TestCase):
self.rf.get('/', REQUEST_METHOD='FAKE') self.rf.get('/', REQUEST_METHOD='FAKE')
).status_code, 405) ).status_code, 405)
def test_get_and_head(self):
"""
Test a view which supplies a GET method also responds correctly to HEAD
"""
self._assert_simple(SimpleView.as_view()(self.rf.get('/')))
response = SimpleView.as_view()(self.rf.head('/'))
self.assertEqual(response.status_code, 200)
def test_get_and_post(self): def test_get_and_post(self):
""" """
Test a view which only allows both GET and POST. Test a view which only allows both GET and POST.
@ -167,6 +175,13 @@ class TemplateViewTest(TestCase):
""" """
self._assert_about(AboutTemplateView.as_view()(self.rf.get('/about/'))) self._assert_about(AboutTemplateView.as_view()(self.rf.get('/about/')))
def test_head(self):
"""
Test a TemplateView responds correctly to HEAD
"""
response = AboutTemplateView.as_view()(self.rf.head('/about/'))
self.assertEqual(response.status_code, 200)
def test_get_template_attribute(self): def test_get_template_attribute(self):
""" """
Test a view that renders a template on GET with the template name as Test a view that renders a template on GET with the template name as