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接收多播数据的代码
Mar 01 Python
用python实现批量重命名文件的代码
May 25 Python
python中二维阵列的变换实例
Oct 09 Python
Python中运行并行任务技巧
Feb 26 Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
Python实现压缩和解压缩ZIP文件的方法分析
Sep 28 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 Python
详解Python文件修改的两种方式
Aug 22 Python
Pytorch 使用 nii数据做输入数据的操作
May 26 Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 Python
Python 绘制多因子柱状图
May 11 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
实现dedecms全站URL静态化改造的代码
2007/03/29 PHP
邮箱正则表达式实现代码(针对php)
2013/06/21 PHP
PHP中的按位与和按位或操作示例
2014/01/27 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
2015/07/28 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
2017/05/05 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
简单三步,搞掂内存泄漏
2007/03/10 Javascript
JS 动态加载脚本的4种方法
2009/05/05 Javascript
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
javascript实现抽奖程序的简单实例
2016/06/07 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
easyui combogrid实现本地模糊搜索过滤多列
2017/05/13 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
python和pygame实现简单俄罗斯方块游戏
2021/02/19 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
python 三元运算符使用解析
2019/09/16 Python
Python3如何实现Win10桌面自动切换
2020/08/11 Python
Pytorch实现WGAN用于动漫头像生成
2021/03/04 Python
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
兼职业务员岗位职责
2014/01/01 职场文书
期中考试后的反思
2014/02/08 职场文书
2014年财政局工作总结
2014/12/09 职场文书
单位收入证明范本
2015/06/18 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
Python字符串的转义字符
2022/04/07 Python
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
2022/06/01 Java/Android