django实现HttpResponse返回json数据为中文

 更新时间:2020年03月27日 10:19:21   作者:打卤  
这篇文章主要介绍了django实现HttpResponse返回json数据为中文,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

Python3读取写入json的中文乱码问题

之前我用django一般用JsonResponse来返回json数据格式

但是发现返回中文的时候会乱码

from django.http import JsonResponse
def test(request):
 result = {"result": 0, "msg": "执行成功"}
 return return JsonResponse(result)

这种方式返回简单,但是中文会乱码

现在改成用HttpResponse来返回,显示中文成功

from django.http import HttpResponse
import json
def test(request):
 result = {"result": 0, "msg": "执行成功"}
 #json返回为中文
 return HttpResponse(json.dumps(result,ensure_ascii=False),content_type="application/json,charset=utf-8")

补充知识:Django中的HttpResponse和JsonResponse

我们在编写一些接口函数的时候,经常需要给调用者返回json格式的数据,那么如何返回可直接解析的数据呢?

首先第一种方式:

from django.shortcuts import render
from django.http import HttpResponse,JsonResponse
import json

# Create your views here.

def index(request):
 data={
  'name':'zhangsan',
  'age':18,
 }
 return HttpResponse(json.dumps(data))

这里前台的返回信息中,返回的Content-Type:是text/html,也就是字符串类型的返回,所以这段返回值并不是一个标准的json数据,是一个长得像json数据的字符串,当然可以通过工具直接转换为json,不过既然是一个json的接口,那么我们抛出的数据自然是json格式的最好,那如何抛出标准json格式的数据呢?

稍稍修改一丢丢代码,在HttpResponse中添加content_type类型为json的属性

from django.shortcuts import render
from django.http import HttpResponse,JsonResponse
import json

# Create your views here.

def index(request):
 data={
  'name':'zhangsan',
  'age':18,
 }
 return HttpResponse(json.dumps(data),content_type="application/json")

现在返回的就是application/json了;

那么Django提供了更方便的方法那就是JsonResponse,它内置帮我们封装了这个转换的操作,也就是说我们的接口抛json数据的话那么将HttpResponse替换为JsonResponse就OK了

1.首先先传dict数据:

from django.shortcuts import render
from django.http import HttpResponse,JsonResponse

# Create your views here.

def index(request):
 data={
  'name':'zhangsan',
  'age':18,
 }
 return JsonResponse(data)

成功收到json数据;

2.接着再试试list数据:

from django.shortcuts import render
from django.http import HttpResponse,JsonResponse

# Create your views here.

def index(request):

 listdata=[1,2,3,4,5]
 return JsonResponse(listdata)

此时查看输出,却报错了:

In order to allow non-dict objects to be serialized set the safe parameter to False.

所以我们如果需要将非dict类型的数据进行JsonResponse传值,需要将safe参数设置为False

from django.shortcuts import render
from django.http import HttpResponse,JsonResponse

# Create your views here.

def index(request):

 listdata=[1,2,3,4,5]
 return JsonResponse(listdata,safe=False)

此时成功接收到数据。

3.如果我们需要使用JsonResponse传中文

def func(request):
 data={'姓名':'释明空'}
 return JsonResponse(data,json_dumps_params={'ensure_ascii':False})

此时需要添加'json_dumps_params={‘ensure_ascii':False}',因为json序列化中文用的是ascii编码,所以传到前台的中文是ascii字符码,需要这一步转化为中文。

以上这篇django实现HttpResponse返回json数据为中文就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题

    新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题

    这篇文章主要介绍了解决新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • 快速解决pyqt5窗体关闭后子线程不同时退出的问题

    快速解决pyqt5窗体关闭后子线程不同时退出的问题

    今天小编就为大家分享一篇快速解决pyqt5窗体关闭后子线程不同时退出的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • python 简单搭建阻塞式单进程,多进程,多线程服务的实例

    python 简单搭建阻塞式单进程,多进程,多线程服务的实例

    下面小编就为大家带来一篇python 简单搭建阻塞式单进程,多进程,多线程服务的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Python实现最大子序和的方法示例

    Python实现最大子序和的方法示例

    这篇文章主要介绍了Python实现最大子序和的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python多线程的线程如何安全实现

    python多线程的线程如何安全实现

    在本篇文章里小编给大家整理了一篇关于python多线程的线程如何安全实现的内容,有兴趣的朋友们可以学习参考下。
    2021-08-08
  • Python的joblib模型固化函数解析

    Python的joblib模型固化函数解析

    这篇文章主要介绍了Python的joblib模型固化函数解析,joblib提供了三个与对象序列化和模型固化相关的函数hash,dump,load,joblib.hash主要是为了提供一个numpy对象的hash方法,需要的朋友可以参考下
    2023-08-08
  • pycharm中成功运行图片的配置教程

    pycharm中成功运行图片的配置教程

    今天小编就为大家分享一篇pycharm中成功运行图片的配置教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python logging模块原理解析及应用

    Python logging模块原理解析及应用

    这篇文章主要介绍了Python logging模块原理解析及应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Python处理CSV与List的转换方法

    Python处理CSV与List的转换方法

    下面小编就为大家分享一篇Python处理CSV与List的转换方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python中创建对象列表的实现示例

    Python中创建对象列表的实现示例

    本文主要介绍了Python中创建对象列表的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03

最新评论