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数据;

  1. 接着再试试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)

此时成功接收到数据。

  1. 如果我们需要使用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和JsonResponse的更多相关文章

  1. Django中HttpRequest和HttpResponse

    请求和响应对象 Django中通过使用请求和响应对象来传递系统的状态. 当请求一个页面的时候,Django就创建一个HttpRequest对象,它包含了关于请求的元数据对象,然后Django加载适当的 ...

  2. django之HTTPResponse和JsonResponse详解

    HttpResponse对象 Django服务器接收到客户端发送过来的请求后,会将提交上来的这些数据封装成一个HttpRequest对象传给视图函数.那么视图函数在处理完相关的逻辑后,也需要返回一个响 ...

  3. Django HttpResponse与JsonResponse

    本文链接:https://blog.csdn.net/mr_hui_/article/details/86498509 我们编写一些接口函数的时候,经常需要给调用者返回json格式的数据,那么如何返回 ...

  4. django中文件下载(HttpResponse)

    最近一个用django开发的web项目要进行数据的导入导出,所以有必要了解下. django中主要用HttpResponse将请求结果返回给浏览器,所以文件的下载也是通过改对象进行处理的,具体的一个列 ...

  5. Django中的HttpRequsest 和Httpresponse对象

    HttpRequest对象:每一个用户请求在到达视图函数的同时,django会自动创建一个HttpRequest对象并把这个对象当做第一个参数传给要调用的views方法,HttpRequest对象里封 ...

  6. Django中views笔记

    reverse反解析 #路由中定义namespace.name,reverse可将其转换为url url = reverse('namespace:name') return redirect(url ...

  7. Django中的视图(view)

    视图 1.什么是视图 视图就是Django项目下的view.py文件,它的内部是一系列的函数或者是类,用来专门处理客户端访问请求后处理请求并且返回相应的数据,相当于一个中央情报处理系统 2.具体视图实 ...

  8. 简单操作django中session和cookie

    cookie 1.会话技术 2.客户端的会话技术( 数据库保存在浏览器上) 3.问题导致原因: 在web应用中,一次网络请求是从request开始,到response结束,跟以后的请求或者跟其他请求没 ...

  9. Django中的视图

    Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误, ...

随机推荐

  1. 【转】java即时消息推送

    整个例子的源码下载:http://pan.baidu.com/s/1gfFYSbp 下载服务端jar文件 Comet4J目前仅支持Tomcat6.7版本,根据您所使用的Tomcat版本下载[comet ...

  2. kubernetes(k8s)Pod污点与容忍

    污点(taints)与容忍(tolerations) 对于nodeAffinity无论是硬策略还是软策略方式,都是调度 pod 到预期节点上,而Taints恰好与之相反,如果一个节点标记为 Taint ...

  3. 兼容ie8的多维数组——深拷贝

    浅拷贝只是把对象的内存位置指针给拷贝了,若修改拷贝对象,则原对象也会跟踪修改. var a = {a : 'old', b : { c : 'old'}} var b = Object.assign( ...

  4. css定位的理解

    在CSS中关于定位的内容是:position:relative | absolute | static | fixed ● static 没有特别的设定,遵循基本的定位规定,不能通过z-index进行 ...

  5. .gitignore 文件使用说明

    我们在使用 Git 进行版本控制的时候,有些文件是无需纳入 Git 管理的,通常都是些自动 生成的文件,像日志或者编译过程中创建的文件.我们可以创建一个名为 .gitignore 的文件,列出要忽略的 ...

  6. python使用threading获取线程函数返回值的实现方法

    python使用threading获取线程函数返回值的实现方法 这篇文章主要介绍了python使用threading获取线程函数返回值的实现方法,需要的朋友可以参考下 threading用于提供线程相 ...

  7. ICPC Asia Nanning 2017 I. Rake It In (DFS+贪心 或 对抗搜索+Alpha-Beta剪枝)

    题目链接:Rake It In 比赛链接:ICPC Asia Nanning 2017 Description The designers have come up with a new simple ...

  8. IntelliJ快捷键记录

    1.自动补全返回类型及变量:Ctrl+Alt+V2.大小写转换:Ctrl+Shift+U3.get/set方法快捷键:Alt+Insert4. 查看类继承关系:Ctrl+H或者Ctrl+Shift+A ...

  9. vim + ctag + Taglist (转)

    一.ctag 当然,第一步就是要下载它!一条命令搞定: $sudo apt-get install ctags 如果不幸提示找不到软件包ctags,首先你也许应该update一下你的软件源,还不行的话 ...

  10. Java 序列化和反序列化(一)Serializable 使用场景

    目录 Java 序列化和反序列化(一)Serializable 使用场景 1. 最简单的使用:Serializable 接口 2. 序列化 ID 的问题 3. 静态字段不会序列化 4. 屏蔽字段:tr ...