当前位置: 首页 > news >正文

Backend - Django JsonResponse HttpResponse

目录

一、关系

二、使用

(一)data 字典传值

1. JsonResponse

2. HttpResponse

3. 例子

(二)JsonResponse 有一个 safe 参数

(三)前端接收

1. 接收 JsonResponse 回传的值

2. 接收 HttpResponse 回传的值

3. 不分情况

(四)若报错:TypeError: In order to allow non-dict objects to be serialized set the safe parameter to False

原因:

解决:

例子:


一、关系

        JsonResponse 是 HttpResponse 的一个子类。

        从1.7版本开始,Django使用内置JsonResponse类。

二、使用

(一)data 字典传值

1. JsonResponse

JsonResponse 的 data 参数是个字典。

# JsonResponse
from django.http import JsonResponse
return JsonResponse(mydict)

2. HttpResponse

HttpResponse 的 content 参数值必须是引号包裹的字符串。

比如,用 json.dumps 将 data 值转成JSON字串。

# HttpResponse
import json
return HttpResponse(json.dumps(mydict))

3. 例子

import json
from django.http import JsonResponse
data= {'name': '萝卜干'}# 第一种
HttpResponse(json.dumps(data), content_type='application/json')  # 第一个参数位置,默认是content的参数值,第二个位置需要指定是什么参数的值,比如content_type=XXX# 第二种(几乎等价于第一种)
JsonResponse(data)  # 默认的content_type='application/json'

(二)JsonResponse 有一个 safe 参数

safe:控制是否只有dict对象可以序列化,默认为 True。

若 safe 设置为True,但是 data 的数据类型不是 dict ,则抛出一个 TypeError 类型错误。

若想对非字典的数据(如列表)进行 dumps ,则 safe 设置为 False。

(三)前端接收

1. 接收 JsonResponse 回传的值

若使用JsonResponse传值,前台ajax收到的data不需要转JSON.parse(data),直接使用。

2. 接收 HttpResponse 回传的值

若使用HttpResponse传值,需要转JSON.parse(data)处理。

3. 不分情况

若是不考虑后台采用JsonResponse或者HttpResponse,则前台ajax处理时统一加属性:dataType:'json'。

(四)若报错:TypeError: In order to allow non-dict objects to be serialized set the safe parameter to False

原因:

        JsonResponse中的参数要求字典,若非字典则报错。

解决:

        ① 传参数为字典。

        ② 设置参数safe=False。

例子:

return JsonResponse(result)
# 改为:
return JsonResponse(result, safe=False)

相关文章:

  • Golang实践录:读取xml配置文件
  • 堆排序详细解读
  • 应急响应-挖矿病毒处理
  • 掌握 Go 语言中的循环结构:从基础到高级
  • ESP32 LVGL Gui-Guider的移植
  • openGauss学习笔记-141 openGauss 数据库运维-例行维护-例行重建索引
  • Python面向对象练习
  • php轻量级性能分析工具 xhprof
  • 场景实践 | 法大大落地业财一体化,优化流程结构
  • SpringBoot之整合JWT
  • 深度学习机器视觉车道线识别与检测 -自动驾驶 计算机竞赛
  • Vue框架学习笔记——列表渲染:v-for
  • canvas绘制小丑
  • 【Vue】使用 Vue CLI 脚手架创建 Vue 项目(使用命令行创建)
  • LeetCode | 104. 二叉树的最大深度
  • [NodeJS] 关于Buffer
  • Codepen 每日精选(2018-3-25)
  • cookie和session
  • css选择器
  • Docker: 容器互访的三种方式
  • gops —— Go 程序诊断分析工具
  • javascript从右向左截取指定位数字符的3种方法
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Shadow DOM 内部构造及如何构建独立组件
  • SQLServer之索引简介
  • win10下安装mysql5.7
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 从零开始在ubuntu上搭建node开发环境
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 应用生命周期终极 DevOps 工具包
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ###项目技术发展史
  • #HarmonyOS:基础语法
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (145)光线追踪距离场柔和阴影
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (第61天)多租户架构(CDB/PDB)
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (一)Java算法:二分查找
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • .cn根服务器被攻击之后
  • .form文件_SSM框架文件上传篇
  • .NET CLR基本术语
  • .NET MVC第五章、模型绑定获取表单数据
  • .net 设置默认首页
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例