Commit 11b06532 authored by Russell Keith-Magee's avatar Russell Keith-Magee
Browse files

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

Fixed #20478 – Added support for HTTP PATCH method in generic views.
parents 51998dff ee8b810b
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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)
+1 −1
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ View

        Default::

            ['get', 'post', 'put', 'delete', 'head', 'options', 'trace']
            ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']

    **Methods**

+3 −0
Original line number Diff line number Diff line
@@ -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
=====================================

+6 −0
Original line number Diff line number Diff line
@@ -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/'))