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简单猜数游戏实例
Jul 09 Python
Python实现自动为照片添加日期并分类的方法
Sep 30 Python
python的文件操作方法汇总
Nov 10 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
Nov 14 Python
python 检查文件mime类型的方法
Dec 08 Python
pycharm的console输入实现换行的方法
Jan 16 Python
Python中字典与恒等运算符的用法分析
Aug 22 Python
使用python切片实现二维数组复制示例
Nov 26 Python
Keras:Unet网络实现多类语义分割方式
Jun 11 Python
Python字典fromkeys()方法使用代码实例
Jul 20 Python
python中字典增加和删除使用方法
Sep 30 Python
python中使用np.delete()的实例方法
Feb 01 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操作SVN版本服务器类代码
2011/11/27 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
jQuery基础语法实例入门
2014/12/23 Javascript
javascript实现延时显示提示框特效代码
2016/04/27 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
分享一个精简的vue.js 图片lazyload插件实例
2017/03/13 Javascript
vue translate peoject实现在线翻译功能【新手必看】
2018/06/07 Javascript
使用vue完成微信公众号网页小记(推荐)
2019/04/28 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
微信小程序获取当前时间及星期几的实例代码
2020/09/20 Javascript
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
[01:43]3.19DOTA2发布会 三代刀塔人第三代
2014/03/25 DOTA
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
Python如何为图片添加水印
2016/11/25 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
python模块导入的细节详解
2018/12/10 Python
python中for in的用法详解
2020/04/17 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
HTTP状态码详解
2021/03/18 杂记
饮料业务员岗位职责
2013/12/15 职场文书
运动会广播稿500字
2014/01/28 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
减负增效提质方案
2014/05/23 职场文书
2014年重阳节活动策划方案书
2014/09/16 职场文书
给校长的一封检讨书
2014/09/20 职场文书
党员评议个人总结
2014/10/20 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
七年级作文之冬景
2019/11/07 职场文书
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL