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批量修改文件名的实现代码
Sep 01 Python
Python中使用不同编码读写txt文件详解
May 28 Python
详解Python中heapq模块的用法
Jun 28 Python
Python如何快速实现分布式任务
Jul 06 Python
通过Pandas读取大文件的实例
Jun 07 Python
python让列表倒序输出的实例
Jun 25 Python
使用PyCharm创建Django项目及基本配置详解
Oct 24 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
Dec 05 Python
python+logging+yaml实现日志分割
Jul 22 Python
浅析Django 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
Mar 09 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
May 22 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
Mar 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
php 动态执行带有参数的类方法
2009/04/10 PHP
PHP中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
2015/01/26 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
jQuery 位置插件
2008/12/25 Javascript
javascript操作html控件实例(javascript添加html)
2013/12/02 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
js如何获取object类型里的键值
2014/02/18 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
Angular中$state.go页面跳转并传递参数的方法
2017/05/09 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
js实现简易计算器功能
2019/10/18 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
[25:45]2018DOTA2亚洲邀请赛4.5SOLO赛 Sylar vs Paparazi
2018/04/06 DOTA
剖析Python的Twisted框架的核心特性
2016/05/25 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
Django框架封装外部函数示例
2019/05/28 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
毕业自我评价
2014/02/05 职场文书
公司管理建议书范文
2014/03/12 职场文书
入职担保书范文
2014/05/21 职场文书
机关保密承诺书
2014/06/03 职场文书
服装设计专业自荐信
2014/06/17 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
匿名信格式范文
2015/05/27 职场文书
2016廉洁从政心得体会
2016/01/19 职场文书
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python
浅谈Python协程asyncio
2021/06/20 Python
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android