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。

最新文章

  1. 另类的SQL注入方法
  2. 全景VR视频游戏外包公司:技术分享使用U3D+CB制作VR游戏
  3. Android study first ----------安卓项目目录结构及adb指令
  4. 压测 linux + jexus + mono + asp.net mvc
  5. linux下搭建svn版本控制软件
  6. Android输入法开发
  7. 2.2. 添加托管对象模型(Core Data 应用程序实践指南)
  8. Linux下Tomcat8.0.44安装使用Apr
  9. JAVA_SE基础——43.抽象类
  10. [二十二]JavaIO之LineNumberReader
  11. oracle单字段拆分成多行
  12. Tree Restoration Gym - 101755F (并查集)
  13. 用于Spring Boot Jar部署的shell脚本
  14. AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署
  15. STL容器之set
  16. phpize增加php模块
  17. 过滤器中获取form表单或url请求数据
  18. PHP剔除删除掉危险字符
  19. 未能加载文件或程序集“AjaxControlToolkit”或它的某一个依赖项
  20. 【网页开发学习】Coursera课程《面向 Web 开发者的 HTML、CSS 与 Javascript》Week1课堂笔记

热门文章

  1. C# 获取当前路径方法整理
  2. Java EE之Struts2异常[No mapping found for dependency [type=java.lang.String, name=&#39;actionPackages&#39;#java.lang.RuntimeException]【摘抄】
  3. Coursera, Deep Learning 5, Sequence Models, week2, Natural Language Processing &amp; Word Embeddings
  4. C#后台画图保存为ipg/png的文件
  5. python之第三方模块安装
  6. LOJ #2587「APIO2018」铁人两项
  7. python - one day
  8. mysql 案例 ~ 表空间迁移数据与数据导入
  9. TensorFlow架构学习
  10. Django学习手册 - 登录验证码