Prevented the generic views from automatically creating a HEAD method when there is no GET. Reverts r16105, refs #17449.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17545 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Aymeric Augustin 2012-02-18 09:50:03 +00:00
parent 8d221e554c
commit 52b06e29c7
2 changed files with 16 additions and 4 deletions

View File

@ -43,6 +43,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
@ -76,9 +78,6 @@ class View(object):
)
return http.HttpResponseNotAllowed(allowed_methods)
def head(self, *args, **kwargs):
return self.get(*args, **kwargs)
class TemplateResponseMixin(object):
"""

View File

@ -19,9 +19,15 @@ class SimplePostView(SimpleView):
post = SimpleView.get
class PostOnlyView(View):
def post(self, request):
return HttpResponse('This view only accepts POST')
class CustomizableView(SimpleView):
parameter = {}
def decorator(view):
view.is_decorated = True
return view
@ -102,12 +108,19 @@ class ViewTest(unittest.TestCase):
def test_get_and_head(self):
"""
Test a view which supplies a GET method also responds correctly to HEAD
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_head_no_get(self):
"""
Test a view which supplies no GET method responds to HEAD with HTTP 405.
"""
response = PostOnlyView.as_view()(self.rf.head('/'))
self.assertEqual(response.status_code, 405)
def test_get_and_post(self):
"""
Test a view which only allows both GET and POST.