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实现的简单发送邮件脚本分享
Nov 07 Python
详细解析Python中的变量的数据类型
May 13 Python
Python正则抓取网易新闻的方法示例
Apr 21 Python
Python实现霍夫圆和椭圆变换代码详解
Jan 12 Python
Python数据可视化之画图
Jan 15 Python
基于Python的ModbusTCP客户端实现详解
Jul 13 Python
Python帮你微信头像任意添加装饰别再@微信官方了
Sep 25 Python
python range实例用法分享
Feb 06 Python
Python多进程编程常用方法解析
Mar 26 Python
如何写python的配置文件
Jun 07 Python
Python中的None与 NULL(即空字符)的区别详解
Sep 24 Python
python Pexpect模块的使用
Dec 25 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 的几个配置文件函数
2006/12/21 PHP
PHP sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
php数组转成json格式的方法
2015/03/09 PHP
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
PHP+MySql+jQuery实现的"顶"和"踩"投票功能
2016/05/21 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
2013/04/28 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
2019/05/01 Javascript
微信小程序Echarts覆盖正常组件问题解决
2019/07/13 Javascript
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
[01:11:48]Fnatic vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Windows下用py2exe将Python程序打包成exe程序的教程
2015/04/08 Python
python 获取一个值在某个区间的指定倍数的值方法
2018/11/12 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
美国五金商店:Ace Hardware
2018/03/27 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
简历中的自我评价怎么写
2014/01/29 职场文书
银行求职信
2014/05/31 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
催款函范本大全
2015/06/24 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
Python爬虫进阶之Beautiful Soup库详解
2021/04/29 Python