JsonResponse
1.JsonResponse
- class JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, **kwargs)
是HttpResponse的一个子类(有很多的子类),用于帮助创建JSON编码的响应。他从父类继承大部分行为,并具有以下的不同点:
它的默认Content-Type头部设置为application/json。
(1)它的第一个参数 data,应该为一个 dict 实例。如果 safe 参数设置为 False,它可以是任何可 JSON 序列化的对象。
(2)encoder,默认为 django.core.serializers.json.DjangoJSONEncoder,用于序列化data。
(3)布尔参数 safe 默认为 True。如果设置为 False,可以传递任何对象进行序列化(否则,只允许 dict 实例)。如果 safe 为 True,而第一个参数传递的不是 dict 对象,将抛出一个TypeError。
(4)json_dumps_params 是一个字典,它是在生成响应时,传给 json.dumps() 的参数。
2.用法
- from django.http import JsonResponse
- response = JsonResponse({'foo': 'bar'})
- response.content
- '{"foo": "bar"}' //<span style=" font-family: Helvetica, Tahoma, Arial, sans-serif;">序列化非字典对象</span>
若要序列化非 dict 对象,你必须设置 safe 参数为 False:
- response = JsonResponse([1, 2, 3], safe=False)
- 如果不传递safe=False,将抛出一个TypeError。
3.修改默认的JSON 编码器
如果你需要使用不同的 JSON 编码器类,你可以传递 encoder 参数给构造函数:
- response = JsonResponse(data, encoder=MyJSONEncoder)
JsonResponse(book_list,safe=False,json_dumps_params={"ensure_ascii":False})
可以解决编码问题,得到想输出的中文了
HTTPResponse JsonReponse Response区别
1.HTTPResponse是由Django创建的,他的返回格式为HTTPResponse(content=响应体, content_type=响应体数据类型, status=状态码),可以修改返回的数据类型,适用于返回图片,视频,音频等二进制文件
2.JsonReponse是HTTPResponse的子类,适用于处理json格式的数据,但是不能返回模板。
帮助我们将数据转换为json字符串
设置响应头Content-Type为application/json
3.Response是Django-rest Framework框架中封装好的响应对象,他的返回格式为Response(data, status=None, template_name=None, headers=None, content_type=None),
data只需传递python的内建类型数据即可,如果是Django的模型类对象,那么就使用序列化将数据(python的字典数据)传递给data。
JsonResponse的更多相关文章
- Request对象和Response对象 JsonResponse对象 和 Django shortcut functions 和QueryDict对象
request request属性 属性: django将请求报文中的请求行.头部信息.内容主体封装成 HttpRequest 类中的属性. 除了特殊说明的之外,其他均为只读的. ''' 0.Http ...
- Django 中的JsonResponse 和 json区别
from django.http import JsonResponse JsonResponse 里面代码会加这一个响应头 kwargs.setdefault('content_type', 'ap ...
- Django JsonResponse与HttpResponse重要区别
JsonResponse是HttpResponse的一个子类,是Django提供的用于创建JSON编码类型响应的快捷类.它的默认Content-Type头部设置为application/json,它的 ...
- JsonResponse返回中文乱码问题
class Publish(APIView): def get(self, request): publish_list = models.Publish.objects.all() bs = MyS ...
- django JsonResponse和HttpResponse的在后端和前端区别
JsonResponse和HttpResponse的区别 1.from django.http import JsonResponse return JsonResponse('例子') 2.impo ...
- Django之JsonResponse
JsonResponse 对象: class JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=No ...
- django之视图系统 views.py-->主要内容(FBV和CBV、dispath、request对象和request.FILES、JsonResponse)
一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 一 视图的实现可以基于两种方法: 1 基于函数的形式 FBV 使用装饰器装饰FBV 直接在上 ...
- python测试开发django-16.JsonResponse返回中文编码问题
前言 django查询到的结果,用JsonResponse返回在页面上显示类似于\u4e2d\u6587 ,注意这个不叫乱码,这个是unicode编码,python3默认返回的编码 遇到问题 接着前面 ...
- [django]JsonResponse序列化数据
def home(request): data = { 'name': 'maotai', 'age': 22 } import json return HttpResponse(json.dumps ...
随机推荐
- 开源框架.netCore DncZeus学习(二)配置连接
配置连接字符串,update-database,初始数据后,访问报错,提示offset错误.因为本机上使用的sql2008. .net Core 2.X中的EF访问sqlserver2008默认使用的 ...
- Java8新特性 并行流与串行流 Fork Join
并行流就是把一个内容分成多个数据块,并用不同的线程分 别处理每个数据块的流. Java 8 中将并行进行了优化,我们可以很容易的对数据进行并 行操作. Stream API 可以声明性地通过 para ...
- Linux 下磁盘挂载
Linux 磁盘挂载 新硬盘挂载: fdisk /dev/sdb p # 打印分区 d # 删除分区 n # 创建分区,(一块硬盘最多4个主分区,扩展占一个主分区位置.p主分区 e扩展) w # 保存 ...
- Debian Security Advisory(Debian安全报告) DSA-4416-1 wireshark security update
Debian Security Advisory(Debian安全报告) DSA-4416-1 wireshark security update Package:wireshark CVE ID : ...
- Menu显示三个点,不显示内容
先说下menu的使用 首先自定义一个menu选项 <menu xmlns:android="http://schemas.android.com/apk/res/android&quo ...
- Linux常用命令(三)查看当前计算机各方面信息
1.查看cpu: top 2.查看当前linux版本:name -a 查看当前运行的内核版本:cat /pro/version 查看发行版本信息:cat /etc/issue 查看上面所有信息:lsb ...
- D - The Lucky Week ZOJ - 3939 (思维)
题目链接: D - The Lucky Week ZOJ - 3939 题目大意:幸运的星期指,星期一为每个月的1 or 11 or 21号.给出第一个幸运星期的时间,问从当前的日起开始.第n个的日 ...
- 前端 - jsonp 跨域ajax
jsonp 跨域ajax原理: 浏览器同源策略限制 如何解决同源策略限制: 方式一: 利用创建script块,在其中执行src属性为 远程url 异域 用函数(返回值) 的形式返回参数 方式二: jq ...
- Android插件化技术简介
https://blog.csdn.net/io_field/article/details/79084630 可以通过反射 事先定义统一接口的方式,访问插件中的类和方法 还可以在AndroidMan ...
- openstack Q版部署-----Mysql、MQ、Memcached安装配置(2)
一.安装mysql(contorller) 安装软件包: yum install -y mariadb mariadb-server python2-PyMySQL 配置my.cnf文件 vi /et ...