mirror of
https://github.com/django/django.git
synced 2025-10-24 22:26:08 +00:00
Fixed #33132 -- Fixed test client handling of querystring only redirects.
Regression in 1e5aa8e1c7.
This commit is contained in:
committed by
Carlton Gibson
parent
f997c81472
commit
b1bf8c8a4b
@@ -291,6 +291,13 @@ class ClientTest(TestCase):
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.request['PATH_INFO'], '/accounts/login/')
|
||||
|
||||
def test_redirect_to_querystring_only(self):
|
||||
"""A URL that consists of a querystring only can be followed"""
|
||||
response = self.client.post('/post_then_get_view/', follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.request['PATH_INFO'], '/post_then_get_view/')
|
||||
self.assertEqual(response.content, b'The value of success is true.')
|
||||
|
||||
def test_follow_307_and_308_redirect(self):
|
||||
"""
|
||||
A 307 or 308 redirect preserves the request method after the redirect.
|
||||
|
||||
@@ -8,6 +8,7 @@ urlpatterns = [
|
||||
path('upload_view/', views.upload_view, name='upload_view'),
|
||||
path('get_view/', views.get_view, name='get_view'),
|
||||
path('post_view/', views.post_view),
|
||||
path('post_then_get_view/', views.post_then_get_view),
|
||||
path('put_view/', views.put_view),
|
||||
path('trace_view/', views.trace_view),
|
||||
path('header_view/', views.view_with_header),
|
||||
|
||||
@@ -85,6 +85,21 @@ def post_view(request):
|
||||
return HttpResponse(t.render(c))
|
||||
|
||||
|
||||
def post_then_get_view(request):
|
||||
"""
|
||||
A view that expects a POST request, returns a redirect response
|
||||
to itself providing only a ?success=true querystring,
|
||||
the value of this querystring is then rendered upon GET.
|
||||
"""
|
||||
if request.method == 'POST':
|
||||
return HttpResponseRedirect('?success=true')
|
||||
|
||||
t = Template('The value of success is {{ value }}.', name='GET Template')
|
||||
c = Context({'value': request.GET.get('success', 'false')})
|
||||
|
||||
return HttpResponse(t.render(c))
|
||||
|
||||
|
||||
def json_view(request):
|
||||
"""
|
||||
A view that expects a request with the header 'application/json' and JSON
|
||||
|
||||
Reference in New Issue
Block a user