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实用日期时间处理方法汇总
May 09 Python
深入浅析Python中join 和 split详解(推荐)
Jun 30 Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 Python
pandas 对每一列数据进行标准化的方法
Jun 09 Python
解决Python安装后pip不能用的问题
Jun 12 Python
解决python彩色螺旋线绘制引发的问题
Nov 23 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
python实现串口通信的示例代码
Feb 10 Python
Python爬取YY评级分数并保存数据实现过程解析
Jun 01 Python
Python json格式化打印实现过程解析
Jul 21 Python
Python pymsql模块的使用
Sep 07 Python
python日志通过不同的等级打印不同的颜色(示例代码)
Jan 13 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下的权限算法的实现
2007/04/28 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
jQuery 插件 将this下的div轮番显示
2009/04/09 Javascript
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
使用jquery实现简单的ajax
2013/07/08 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
Vue.js组件tabs实现选项卡切换效果
2016/12/01 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
基于vue展开收起动画的示例代码
2018/07/05 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
2018/07/07 Javascript
详解Vue CLI3配置解析之css.extract
2018/09/14 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
JS实现提示框跟随鼠标移动
2019/08/27 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
Python爬取破解无线网络wifi密码过程解析
2019/09/17 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
德国最新街头服饰网上商店:BODYCHECK
2019/09/15 全球购物
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
Pamela Love官网:纽约设计师Pamela Love的精美、时尚和穿孔珠宝
2020/10/19 全球购物
自我评价正确写法范文
2013/12/10 职场文书
护理人员的自我评价分享
2014/03/15 职场文书
军训口号
2014/06/13 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
2014年质检员工作总结
2014/11/18 职场文书
推荐信范文大全
2015/03/27 职场文书