Merge pull request #1198 from KrzysiekJ/http-patch-method

Fixed #20478 – Added support for HTTP PATCH method in generic views.
This commit is contained in:
Russell Keith-Magee 2013-05-22 17:19:43 -07:00
commit 11b06532f7
4 changed files with 14 additions and 2 deletions

View File

@ -30,7 +30,7 @@ class View(object):
dispatch-by-method and simple sanity checking.
"""
http_method_names = ['get', 'post', 'put', 'delete', 'head', 'options', 'trace']
http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
def __init__(self, **kwargs):
"""
@ -206,3 +206,6 @@ class RedirectView(View):
def put(self, request, *args, **kwargs):
return self.get(request, *args, **kwargs)
def patch(self, request, *args, **kwargs):
return self.get(request, *args, **kwargs)

View File

@ -55,7 +55,7 @@ View
Default::
['get', 'post', 'put', 'delete', 'head', 'options', 'trace']
['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
**Methods**

View File

@ -258,6 +258,9 @@ Minor features
methods returning the first or last object matching the filters. Returns
``None`` if there are no objects matching.
* :class:`~django.views.generic.base.View` and
:class:`~django.views.generic.base.RedirectView` now support HTTP PATCH method.
Backwards incompatible changes in 1.6
=====================================

View File

@ -384,6 +384,12 @@ class RedirectViewTest(unittest.TestCase):
self.assertEqual(response.status_code, 301)
self.assertEqual(response.url, '/bar/')
def test_redirect_PATCH(self):
"Default is a permanent redirect"
response = RedirectView.as_view(url='/bar/')(self.rf.patch('/foo/'))
self.assertEqual(response.status_code, 301)
self.assertEqual(response.url, '/bar/')
def test_redirect_DELETE(self):
"Default is a permanent redirect"
response = RedirectView.as_view(url='/bar/')(self.rf.delete('/foo/'))