summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Plant <L.Plant.98@cantab.net>2011-04-23 15:10:51 +0000
committerLuke Plant <L.Plant.98@cantab.net>2011-04-23 15:10:51 +0000
commitf4c808b7f50d6906d96593626ccdd016b0b1b96b (patch)
treec4c07bf3a987add40932ea34d17b05fbeecd2e53
parent065e6b6153a2656a9d60ca7da72236de0843e6a5 (diff)
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
-rw-r--r--django/views/generic/base.py2
-rw-r--r--tests/regressiontests/generic_views/base.py15
2 files changed, 17 insertions, 0 deletions
diff --git a/django/views/generic/base.py b/django/views/generic/base.py
index ef74474417..4e28b5280d 100644
--- a/django/views/generic/base.py
+++ b/django/views/generic/base.py
@@ -44,6 +44,8 @@ class View(object):
def view(request, *args, **kwargs):
self = cls(**initkwargs)
+ if hasattr(self, 'get') and not hasattr(self, 'head'):
+ self.head = self.get
return self.dispatch(request, *args, **kwargs)
# take name and docstring from class
diff --git a/tests/regressiontests/generic_views/base.py b/tests/regressiontests/generic_views/base.py
index 4003bbe732..fc5cf62e43 100644
--- a/tests/regressiontests/generic_views/base.py
+++ b/tests/regressiontests/generic_views/base.py
@@ -101,6 +101,14 @@ class ViewTest(unittest.TestCase):
self.rf.get('/', REQUEST_METHOD='FAKE')
).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):
"""
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/')))
+ 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):
"""
Test a view that renders a template on GET with the template name as