diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2011-04-02 08:50:05 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2011-04-02 08:50:05 +0000 |
| commit | 686ef6c7596ca1fcfde01212ca3ebcdeb9378e74 (patch) | |
| tree | 2fe85e4530de10c60ba6b5b03cc4525cf44982f4 | |
| parent | e6fe336f10d461b84989a88786a8fd0bfb489a3e (diff) | |
[1.3.X] Fixed #15739 -- Added support to RedirectView for HEAD, OPTIONS, POST, PUT and DELETE requests
Backport of r15992 from trunk.
git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.3.X@15995 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/views/generic/base.py | 15 | ||||
| -rw-r--r-- | tests/regressiontests/generic_views/base.py | 30 |
2 files changed, 45 insertions, 0 deletions
diff --git a/django/views/generic/base.py b/django/views/generic/base.py index d732af5d66..1ac7fb89ee 100644 --- a/django/views/generic/base.py +++ b/django/views/generic/base.py @@ -161,3 +161,18 @@ class RedirectView(View): 'request': self.request }) return http.HttpResponseGone() + + def head(self, request, *args, **kwargs): + return self.get(request, *args, **kwargs) + + def post(self, request, *args, **kwargs): + return self.get(request, *args, **kwargs) + + def options(self, request, *args, **kwargs): + return self.get(request, *args, **kwargs) + + def delete(self, request, *args, **kwargs): + return self.get(request, *args, **kwargs) + + def put(self, request, *args, **kwargs): + return self.get(request, *args, **kwargs) diff --git a/tests/regressiontests/generic_views/base.py b/tests/regressiontests/generic_views/base.py index e20932b7fe..4003bbe732 100644 --- a/tests/regressiontests/generic_views/base.py +++ b/tests/regressiontests/generic_views/base.py @@ -261,3 +261,33 @@ class RedirectViewTest(unittest.TestCase): response = RedirectView.as_view(url='/bar/%(object_id)d/')(self.rf.get('/foo/42/'), object_id=42) self.assertEqual(response.status_code, 301) self.assertEqual(response['Location'], '/bar/42/') + + def test_redirect_POST(self): + "Default is a permanent redirect" + response = RedirectView.as_view(url='/bar/')(self.rf.post('/foo/')) + self.assertEqual(response.status_code, 301) + self.assertEqual(response['Location'], '/bar/') + + def test_redirect_HEAD(self): + "Default is a permanent redirect" + response = RedirectView.as_view(url='/bar/')(self.rf.head('/foo/')) + self.assertEqual(response.status_code, 301) + self.assertEqual(response['Location'], '/bar/') + + def test_redirect_OPTIONS(self): + "Default is a permanent redirect" + response = RedirectView.as_view(url='/bar/')(self.rf.options('/foo/')) + self.assertEqual(response.status_code, 301) + self.assertEqual(response['Location'], '/bar/') + + def test_redirect_PUT(self): + "Default is a permanent redirect" + response = RedirectView.as_view(url='/bar/')(self.rf.put('/foo/')) + self.assertEqual(response.status_code, 301) + self.assertEqual(response['Location'], '/bar/') + + def test_redirect_DELETE(self): + "Default is a permanent redirect" + response = RedirectView.as_view(url='/bar/')(self.rf.delete('/foo/')) + self.assertEqual(response.status_code, 301) + self.assertEqual(response['Location'], '/bar/') |
