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中with语句的用法
Apr 15 Python
在Python中用keys()方法返回字典键的教程
May 21 Python
Python爬虫利用cookie实现模拟登陆实例详解
Jan 12 Python
python版微信跳一跳游戏辅助
Jan 11 Python
Python断言assert的用法代码解析
Feb 03 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
May 08 Python
tensorflow实现简单的卷积网络
May 24 Python
Python3随机漫步生成数据并绘制
Aug 27 Python
pytorch-神经网络拟合曲线实例
Jan 15 Python
python 基于卡方值分箱算法的实现示例
Jul 17 Python
用Python实现职工信息管理系统
Dec 30 Python
10张动图学会python循环与递归问题
Feb 06 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 写文本日志实现代码
2010/05/18 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
我的php学习笔记(毕业设计)
2012/02/21 PHP
浅谈discuz密码加密的方式
2014/05/22 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
关于php几种字符串连接的效率比较(详解)
2017/02/22 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
idTabs基于JQuery的根据URL参数选择Tab插件
2012/04/11 Javascript
jQuery实现的简单分页示例
2016/06/01 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
简单理解js的prototype属性及使用
2016/12/07 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
详解JSON Web Token 入门教程
2018/07/30 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
详细解析Python中的变量的数据类型
2015/05/13 Python
Python操作列表之List.insert()方法的使用
2015/05/20 Python
python使用SMTP发送qq或sina邮件
2017/10/21 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
Django集成搜索引擎Elasticserach的方法示例
2019/06/04 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
团日活动策划书
2014/02/01 职场文书
承诺书模板
2014/08/30 职场文书
党员创先争优心得体会
2014/09/11 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
恰同学少年观后感
2015/06/08 职场文书
小爸爸观后感
2015/06/15 职场文书
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android