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 相关文章推荐
Python2.7读取PDF文件的方法示例
Jul 13 Python
Python实现简单的HttpServer服务器示例
Sep 25 Python
python基于ID3思想的决策树
Jan 03 Python
python学习之hook钩子的原理和使用
Oct 25 Python
pytorch对可变长度序列的处理方法详解
Dec 08 Python
Python初学者常见错误详解
Jul 02 Python
flask框架jinja2模板与模板继承实例分析
Aug 01 Python
python 如何将数据写入本地txt文本文件的实现方法
Sep 11 Python
Python实现剪刀石头布小游戏(与电脑对战)
Dec 31 Python
python使用paramiko实现ssh的功能详解
Mar 06 Python
django之导入并执行自定义的函数模块图解
Apr 01 Python
用python批量下载apk
Dec 29 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内存不够用的快速解决方法
2013/10/26 PHP
PHP开发框架kohana3 自定义路由设置示例
2014/07/14 PHP
php绘图之加载外部图片的方法
2015/01/24 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
js实现的常用的左侧导航效果
2013/10/17 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
vuex学习之Actions的用法详解
2017/08/29 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
Python如何快速实现分布式任务
2017/07/06 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
python中多个装饰器的执行顺序详解
2018/10/08 Python
python添加菜单图文讲解
2019/06/04 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
老公爱的承诺书
2014/03/31 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
大学生年度个人总结
2015/02/15 职场文书
总账会计岗位职责
2015/04/02 职场文书
教师创先争优承诺书
2015/04/27 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书