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之eval()函数危险性浅析
Jul 03 Python
跟老齐学Python之使用Python操作数据库(1)
Nov 25 Python
Python简明入门教程
Aug 04 Python
python基于itchat实现微信群消息同步机器人
Feb 27 Python
python 删除大文件中的某一行(最有效率的方法)
Aug 19 Python
Python实现判断一个字符串是否包含子串的方法总结
Nov 21 Python
基于Python实现的ID3决策树功能示例
Jan 02 Python
在unittest中使用 logging 模块记录测试数据的方法
Nov 30 Python
Python面向对象之类的定义与继承用法示例
Jan 14 Python
Pytorch释放显存占用方式
Jan 13 Python
Python如何自动获取目标网站最新通知
Jun 18 Python
手把手教你实现PyTorch的MNIST数据集
Jun 28 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
php2html php生成静态页函数
2008/12/08 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
php url路由入门实例
2014/04/23 PHP
javascript应用:Iframe自适应其加载的内容高度
2007/04/10 Javascript
js验证模型自我实现的具体方法
2013/06/21 Javascript
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
JavaScript判断变量是否为空的自定义函数分享
2015/01/31 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
JavaScript头像上传插件源码分享
2016/03/29 Javascript
JS拉起或下载app的实现代码
2017/02/22 Javascript
vue.js利用defineProperty实现数据的双向绑定
2017/04/28 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
node前端模板引擎Jade之标签的基本写法
2018/05/11 Javascript
Vuex,iView UI面包屑导航使用扩展详解
2019/11/04 Javascript
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
python类型强制转换long to int的代码
2013/02/10 Python
python中list常用操作实例详解
2015/06/03 Python
Python工厂函数用法实例分析
2018/05/14 Python
解决Pycharm无法import自己安装的第三方module问题
2018/05/18 Python
浅析python3中的os.path.dirname(__file__)的使用
2018/08/30 Python
使用Python在Windows下获取USB PID&VID的方法
2019/07/02 Python
澳洲国民品牌乡村路折扣店:Country Road & Trenery Outlet
2018/04/19 全球购物
彪马日本官网:PUMA日本
2019/01/31 全球购物
施华洛世奇巴西官网:SWAROVSKI巴西
2019/12/03 全球购物
采购部主管岗位职责
2014/01/01 职场文书
促销活动策划方案
2014/01/12 职场文书
打架检讨书400字
2014/01/17 职场文书
财产保全担保书范文
2014/04/01 职场文书
群众路线领导对照材料
2014/08/23 职场文书
三严三实对照检查材料
2014/08/25 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
家属答谢词
2015/01/05 职场文书
结婚十年感言
2015/07/31 职场文书
Nginx中break与last的区别详析
2021/03/31 Servers