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

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)


http://www.kler.cn/a/158060.html

相关文章:

  • 使用 Amazon S3 托管静态网站
  • MSS和MTU的关系
  • 研究发现GPT-4具有出乎意料的文字理解能力;GPT-4 Turbo与GPT-4编辑代码的比较结果
  • FastDFS部署
  • 销售工作中如何满足客户的需求?
  • 【unity3D】Transform组件(如何访问和获取Transform组件)
  • SELinux refpolicy详解(7)
  • Shopee买家通系统全自动模拟真人下单更真实
  • 外包干了2个月,技术倒退2年。。。。。
  • 如何理解点到点传输,如果加速点到点传输速度
  • docker搭建node环境开发服务器
  • 失落的艺术:无着色器3D渲染
  • 三种定时器的实现方式
  • 基于springboot+vue的景区民宿预约系统(前后端分离)
  • 分类预测 | Matlab实现NGO-KELM北方苍鹰算法优化核极限学习机分类预测
  • centos安装Python3之后yum不能使用异常
  • 主要分布式文件系统架构对比分析:GFS vs. Tectonic vs. JuiceFS
  • javaweb校车校园车辆管理系统springboot+jsp
  • 今日实施|解读新国标对数据库审计的能力要求
  • SQL自学通之表达式条件语句与运算