mirror of
https://github.com/django/django.git
synced 2025-08-03 18:38:50 +00:00
Fixed #10571 -- Ensured that unicode POST data is correctly encoded by the test client. Thanks to Rick Wagner for his help identifying and fixing this problem.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10513 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
8fecf36b68
commit
8dc73e8425
5 changed files with 67 additions and 2 deletions
|
@ -1,7 +1,12 @@
|
|||
from django.conf import settings
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.http import HttpResponse, HttpResponseRedirect
|
||||
from django.core.exceptions import SuspiciousOperation
|
||||
from django.shortcuts import render_to_response
|
||||
from django.utils import simplejson
|
||||
from django.utils.encoding import smart_str
|
||||
from django.core.serializers.json import DjangoJSONEncoder
|
||||
from django.test.client import CONTENT_TYPE_RE
|
||||
|
||||
def no_template_view(request):
|
||||
"A simple view that expects a GET request, and returns a rendered template"
|
||||
|
@ -63,3 +68,21 @@ def request_methods_view(request):
|
|||
|
||||
def return_unicode(request):
|
||||
return render_to_response('unicode.html')
|
||||
|
||||
def return_json_file(request):
|
||||
"A view that parses and returns a JSON string as a file."
|
||||
match = CONTENT_TYPE_RE.match(request.META['CONTENT_TYPE'])
|
||||
if match:
|
||||
charset = match.group(1)
|
||||
else:
|
||||
charset = settings.DEFAULT_CHARSET
|
||||
|
||||
# This just checks that the uploaded data is JSON
|
||||
obj_dict = simplejson.loads(request.raw_post_data.decode(charset))
|
||||
obj_json = simplejson.dumps(obj_dict, encoding=charset,
|
||||
cls=DjangoJSONEncoder,
|
||||
ensure_ascii=False)
|
||||
response = HttpResponse(smart_str(obj_json, encoding=charset), status=200,
|
||||
mimetype='application/json; charset=' + charset)
|
||||
response['Content-Disposition'] = 'attachment; filename=testfile.json'
|
||||
return response
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue