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采用socket模拟TCP通讯的实现方法
Nov 19 Python
python爬虫headers设置后无效的解决方法
Oct 21 Python
Python中django学习心得
Dec 06 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
Oct 11 Python
Django 多环境配置详解
May 14 Python
python3实现单目标粒子群算法
Nov 14 Python
python中return的返回和执行实例
Dec 24 Python
Python如何获取Win7,Win10系统缩放大小
Jan 10 Python
基于python 取余问题(%)详解
Jun 03 Python
pycharm 添加解释器的方法步骤
Aug 31 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
Dec 04 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五种设计模式小结
2011/03/23 PHP
php正则表达匹配中文问题分析小结
2012/03/25 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
PHP培训要多少钱
2017/06/06 PHP
PHP+jQuery实现双击修改table表格功能示例
2019/02/21 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
jquery 学习之一 对象访问
2010/11/23 Javascript
JavaScript简单修改窗口大小的方法
2015/08/03 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
jQuery实现拼图小游戏(实例讲解)
2017/07/24 jQuery
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
javascript的this关键字详解
2019/05/20 Javascript
vuex入门最详细整理
2020/03/04 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
Python通过cv2读取多个USB摄像头
2019/08/28 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
java关于string最常出现的面试题整理
2021/01/18 Python
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
EJB的角色和三个对象
2015/12/31 面试题
小学生考试获奖感言
2014/01/30 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
2014大学生中国梦主题教育学习思想汇报
2014/09/10 职场文书
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
重阳节标语大全
2014/10/07 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL
CSS SandBox应用场景及常见问题
2022/06/25 HTML / CSS