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


Posted in Python onMarch 27, 2020

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数据为中文就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python查看多台服务器进程的脚本分享
Jun 11 Python
Python使用wxPython实现计算器
Jan 30 Python
python 字典中文key处理,读取,比较方法
Jul 06 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 Python
详解Python3注释知识点
Feb 19 Python
Django ModelForm组件使用方法详解
Jul 23 Python
Python @property原理解析和用法实例
Feb 11 Python
PyQt5中向单元格添加控件的方法示例
Mar 24 Python
Tensorflow之MNIST CNN实现并保存、加载模型
Jun 17 Python
PyQt5多线程防卡死和多窗口用法的实现
Sep 15 Python
TensorFlow中tf.batch_matmul()的用法
Jun 02 Python
python对XML文件的操作实现代码
Mar 27 #Python
Python Socketserver实现FTP文件上传下载代码实例
Mar 27 #Python
使用python从三个角度解决josephus问题的方法
Mar 27 #Python
解决django接口无法通过ip进行访问的问题
Mar 27 #Python
Django 实现将图片转为Base64,然后使用json传输
Mar 27 #Python
python实现简单坦克大战
Mar 27 #Python
Django实现从数据库中获取到的数据转换为dict
Mar 27 #Python
You might like
php 修改、增加xml结点属性的实现代码
2013/10/22 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
golang、python、php、c++、c、java、Nodejs性能对比
2017/03/12 NodeJs
javascript 框架小结 个人工作经验
2009/06/13 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
百度移动版的url编码解码示例
2014/04/29 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
Javascript中call与apply的学习笔记
2014/09/22 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
JavaScript中的函数嵌套使用
2015/06/04 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
2015/10/01 Javascript
浅析javascript的return语句
2015/12/15 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
2016/06/17 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
2016/11/18 Javascript
Javascript调试之console对象——你不知道的一些小技巧
2017/07/10 Javascript
使用Angular CLI进行Build(构建)和Serve详解
2018/03/24 Javascript
解决Mac node版本升级失败的问题
2018/05/16 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
生产制造追溯系统之再说条码打印
2019/06/03 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
vue实现点击按钮切换背景颜色的示例代码
2020/06/23 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
python画一个玫瑰和一个爱心
2020/08/18 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
html5组织文档结构_动力节点Java学院整理
2017/07/11 HTML / CSS
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
博士学位自我鉴定范文
2013/12/26 职场文书
远程研修随笔感言
2014/02/10 职场文书
高等教育专业自荐信范文
2014/03/26 职场文书
派出所所长先进事迹
2014/05/19 职场文书
食品质量与安全专业毕业生求职信
2014/08/11 职场文书
工商局调档介绍信
2015/10/22 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书