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获取一组数据里最大值max函数用法实例
May 26 Python
Python中return语句用法实例分析
Aug 04 Python
简要讲解Python编程中线程的创建与锁的使用
Feb 28 Python
python 读取Linux服务器上的文件方法
Dec 27 Python
一个可以套路别人的python小程序实例代码
Apr 09 Python
python实现按关键字筛选日志文件
Dec 24 Python
python计算二维矩形IOU实例
Jan 18 Python
解决jupyter notebook显示不全出现框框或者乱码问题
Apr 09 Python
python 使用事件对象asyncio.Event来同步协程的操作
May 04 Python
Python爬取YY评级分数并保存数据实现过程解析
Jun 01 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 Python
python实现简易名片管理系统
Apr 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
PHP 文件上传功能实现代码
2009/06/24 PHP
PHP include任意文件或URL介绍
2014/04/29 PHP
PHP之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
THINKPHP在添加数据的时候获取主键id的值方法
2017/04/03 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
js DataSet数据源处理代码
2010/03/29 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
JS本地刷新返回上一页代码
2016/07/25 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
JavaScript实现的鼠标响应颜色渐变效果完整实例
2017/02/18 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
基于node.js之调试器详解
2017/08/22 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
vue+高德地图实现地图搜索及点击定位操作
2020/09/09 Javascript
Python中使用HTMLParser解析html实例
2015/02/08 Python
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
Python下载网络小说实例代码
2018/02/03 Python
Python管理Windows服务小脚本
2018/03/12 Python
django admin后台添加导出excel功能示例代码
2019/05/15 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
AmazeUI 面板的实现示例
2020/08/17 HTML / CSS
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
施工安全协议书
2013/12/11 职场文书
个人求职信格式范文
2015/03/20 职场文书
实习介绍信范文
2015/05/05 职场文书
活动总结书怎么写
2015/05/11 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
MySql数据库 查询时间序列间隔
2022/05/11 MySQL