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使用百度API上传文件到百度网盘代码分享
Nov 08 Python
python实现扫描日志关键字的示例
Apr 28 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
python安装pywin32clipboard的操作方法
Jan 24 Python
对python判断ip是否可达的实例详解
Jan 31 Python
浅析Python 引号、注释、字符串
Jul 25 Python
python超时重新请求解决方案
Oct 21 Python
Python如何基于selenium实现自动登录博客园
Dec 16 Python
在pycharm中创建django项目的示例代码
May 28 Python
python下对hsv颜色空间进行量化操作
Jun 04 Python
python利用线程实现多任务
Sep 18 Python
python实现商品进销存管理系统
May 30 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 curl的深入解析
2013/06/02 PHP
解析PHP 使用curl提交json格式数据
2013/06/29 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
2015/03/19 PHP
使用XHGui来测试PHP性能的教程
2015/07/03 PHP
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
2016/11/30 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
2017/09/20 Javascript
Vue.js实现分页查询功能
2020/11/15 Javascript
基于vue-video-player自定义播放器的方法
2018/03/21 Javascript
Angular6新特性之Angular Material
2018/12/28 Javascript
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
Python 基础知识之字符串处理
2017/01/06 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
Python实现的tcp端口检测操作示例
2018/07/24 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
2019/04/16 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
Python3 mmap内存映射文件示例解析
2020/03/23 Python
python实现人脸签到系统
2020/04/13 Python
python如何运行js语句
2020/09/09 Python
2019年分享net面试的经历和题目
2016/08/07 面试题
热能动力工程毕业生自荐信
2013/11/07 职场文书
创新比赛获奖感言
2014/02/13 职场文书
消防战士优秀事迹材料
2014/02/13 职场文书
大课间体育活动方案
2014/03/12 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
工伤私了协议书范本
2014/11/24 职场文书
社区党务工作总结2015
2015/05/19 职场文书
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库