Creating UTF-8 JsonResponse in Django
有没有简单的方法可以覆盖
编辑:
或者,如果您倾向于使用UTF-8格式,请使用而不是Django的jsonResponse():
1 2 | return HttpResponse(json.dumps(response_data, ensure_ascii=False), content_type="application/json") |
号
或
1 | return JsonResponse(json.dumps(response_data, ensure_ascii=False), safe=False) |
关于
旧的:
你不必做任何改变。
尽管django以ASCII(来自utf-8)创建JSON数据,但javascript会自动将其解码回utf-8。
为了保持jsonResponse的向后兼容,我们在django-compat中添加了/backported/implemented。也许这对现在或将来的人有帮助…
1 2 3 4 5 6 7 8 | from django.core.serializers.json import DjangoJSONEncoder from django.http import JsonResponse class MyJsonResponse(JsonResponse): def __init__(self, data, encoder=DjangoJSONEncoder, safe=True, **kwargs): json_dumps_params = dict(ensure_ascii=False) super().__init__(data, encoder, safe, json_dumps_params, **kwargs) |
。
我还没有找到比使用已经安装的REST框架更好的方法:
1 2 3 4 5 6 7 8 9 10 11 | from rest_framework.decorators import api_view, permission_classes from rest_framework.permissions import IsAuthenticatedOrReadOnly from rest_framework.response import Response from .models import INITIATOR_TYPES @api_view(['GET']) @permission_classes((IsAuthenticatedOrReadOnly, )) def initiator_types(request): data = {t[0]: str(t[1]) for t in INITIATOR_TYPES} return Response(data) |
但我不太喜欢。它比