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的Supervisor进行进程监控以及自动启动
May 29 Python
Python 爬虫学习笔记之正则表达式
Sep 21 Python
itchat接口使用示例
Oct 23 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
Jun 13 Python
pycharm debug功能实现跳到循环末尾的方法
Nov 29 Python
Python Flask框架扩展操作示例
May 03 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
jupyter notebook实现显示行号
Apr 13 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
在django中实现choices字段获取对应字段值
Jul 12 Python
OpenCV-Python模板匹配人眼的实例
Jun 08 Python
Python并发编程实例教程之线程的玩法
Jun 20 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
图书管理程序(二)
2006/10/09 PHP
php 数组二分法查找函数代码
2010/02/16 PHP
PHP中的float类型使用说明
2010/07/27 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
php查询相似度最高的字符串的方法
2015/03/12 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
JS控制一个DIV层在指定时间内消失的方法
2014/02/17 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
jQuery extend()详解及简单实例
2017/05/06 jQuery
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
深入理解node.js http模块
2018/01/24 Javascript
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
nodejs 日志模块winston的使用方法
2018/05/02 NodeJs
基于ionic实现下拉刷新功能
2018/05/10 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
uniapp微信小程序:key失效的解决方法
2021/01/20 Javascript
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
Django返回json数据用法示例
2016/09/18 Python
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
详解python调用cmd命令三种方法
2019/07/08 Python
tensorflow生成多个tfrecord文件实例
2020/02/17 Python
基于Python绘制个人足迹地图
2020/06/01 Python
Python 存取npy格式数据实例
2020/07/01 Python
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
几个Shell Script面试题
2012/08/31 面试题
2014年班务工作总结
2014/12/02 职场文书
人生感悟经典句子
2019/08/20 职场文书
win10重装系统后上不了网怎么办 win10重装系统网络故障的解决办法
2022/07/23 数码科技