Backend - Django JsonResponse HttpResponse

目录

一、关系

二、使用

(一)data 字典传值

1. HttpResponse

(1)写法

(2)前端接收 HttpResponse 回传的值

2. JsonResponse

(1)写法

(2)前端接收 JsonResponse 回传的值

3. 特殊数据类型的处理

4. 例子

(二)JsonResponse 有一个 safe 参数

1. safe 作用

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

(1)原因

(2)解决


一、关系

        JsonResponse 是 HttpResponse 的一个子类。

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

二、使用

(一)data 字典传值

1. HttpResponse

(1)写法

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

比如,若 data 参数值是个对象(字典),则用 json.dumps 将 data 值转成JSON字串。

# HttpResponse
import json
return HttpResponse(json.dumps(mydict))
(2)前端接收 HttpResponse 回传的值

因为,HttpResponse传的值是通过json处理后的字串格式。所以,前端ajax收到的data是json字串格式,需要用JSON.parse(data)处理,去除json字串。

2. JsonResponse

(1)写法

JsonResponse 的 data 参数可以是个对象(字典)。

# JsonResponse
from django.http import JsonResponse
return JsonResponse(mydict)
(2)前端接收 JsonResponse 回传的值

因为,JsonResponse传的值是字典,没有经过json处理。所以,前端可以不用JSON.parse(data)处理,直接使用。

3. 特殊数据类型的处理

        若是queryset类型的列表,可以先利用列表生成式转换成阵列,再传给前端。

# JsonResponse
from django.http import JsonResponse
myqst = models.Book.objects.filter(booktype='文艺类').values_list('name', flat=True)
mylist = [m for m in myqst]
return JsonResponse(mylist)

4. 例子

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'

 json相关知识可参考另一篇文章:Backend - Python 序列化-CSDN博客

(二)JsonResponse 有一个 safe 参数

1. safe 作用

        默认为 True,控制JsonResponse中只有dict对象可以序列化。

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

(1)原因

        JsonResponse中的safe参数为True,要求data值类型必须为字典,若非字典则抛出一个 TypeError 类型错误。  

(2)解决

        方法① 传data参数为字典类型。

        方法② 若想传列表List类型等,则设置参数safe=False。如下面代码:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/206919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何解压没有密码的7-zip文件?

7z压缩包设置了密码,解压的时候就需要输入正确对密码才能顺利解压出文件,正常当我们解压文件或者删除密码的时候,虽然方法多,但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么,忘记了7z压缩包的密码…

文件重命名大师:批量修改名称的终极指南

在处理大量文件时,我们往往需要修改它们的名称。无论是为了整理、归档还是为了满足某种特定需求,重命名文件都是一项常见的任务。然而,手动一个一个地修改文件名无疑是一项耗时且容易出错的工作。幸运的是,我们可以借助一些强大的…

Python---类的综合案例

1、需求分析 设计一个Game类 属性: 定义一个类属性top_score记录游戏的历史最高分 定义一个实例属性player_name记录当前游戏的玩家姓名 方法: 静态方法show_help显示游戏帮助信息 类方法show_top_score显示历史最高分 实例方法start_game开始当前…

13、pytest为失败的断言定义自己的解释

官方实例 # content of ocnftest.py from test_foocompare import Foodef pytest_assertrepr_compare(op, left, right):if isinstance(left, Foo) and isinstance(right, Foo) and op "":return["Comparing Foo instances:",f" vals:{left.val} !…

震坤行走进中国移动电商平台业务推介启动会助力政企采购升级

震坤行走进中国移动电商平台业务推介启动会助力政企采购升级 7月19日,震坤行受邀参与中国移动供应链管理中心在北京举办的“和悦彩同行 创供赢未来”主题活动,走入客户一线面对面沟通,依托MRO领域服务能力为客户提供专业解决方案&#xff0c…

node后端接口无法插入数据为emoji的表情的问题

原因 emoji的表情一般是这样的\xF0\x9F\x98\x80或者是\xF0\x9F\x98 ,事实上 一般数据库的utf8的编码类型都是能保存\xF0\x9F\x98 但是不能保存\xF0\x9F\x98\x80这种样的emoji,要将数据库编码格式为utf8mb4 也就是utf8的超集 另外,除了 数据库…

angular状态管理方案(ngrx)

完全基于redux的ngrx方案,我们看看在angular中如何实现。通过一个简单的计数器例子梳理下整个流程 一 安装 :npm i ngrx/store 这里特别要注意一点:安装 ngrx/store的时候会出现和angular版本不一致的问题 所以检查一下angular/core的版本…

使用 HPA 和 TopologySpreadConstraints 实现可用区间等比扩容

1. 原理介绍 设置 HPA 每次最小扩容 Pod 数为可用区数量,以期可用区间 Pod 同步扩容设置 TopologySpreadConstraints 可用区分散 maxSkew 为 1,以尽可能可用区间 Pod 均匀分布 2. 实验验证 2.1. 准备 Kind 集群 准备如下配置文件,命名为 …

软件测试面试题及答案解析

在软件测试领域,面试是求职者进入这个行业的重要途径。为了帮助大家更好地应对软件测试面试,本文将为大家提供一些常见的软件测试面试题及答案解析。 请简要介绍一下软件测试的目的和重要性。 答:软件测试的目的是确保软件产品的质量&#…

千问模型测试环境配置

配置千问环境比较顺利,有些由于速度问题较慢,添加源之后提速很多,记录如下: 1.创建虚拟环境 conda create -p /datanas3/chenjing/envs/qwen python3.8 2.激活虚拟环境 conda activate /datanas3/chenjing/envs/qwen 3.添加源 co…

“身份证信息批量核验:高效解决管理难题,轻松提升工作效率“

尊敬的读者们,您是否曾经因为身份证信息的核验而感到烦恼?是否曾经因为手动核验而感到繁琐和耗时?现在,我们向您介绍一款全新的工具——身份证信息批量核验器,它将帮助您一键解决管理难题,让工作事半功倍&a…

尝试通过AI模型进行简单的编码

一、前言 最近尝试通过AI来编程,总体感觉还是能处理写简单的问题,复杂的问题目前还是无法解决。主要的痛点还是数据噪音,就是AI永远不会承认它不会,它会给你的一个错误的信息,它也不会告诉你你的问题它暂时无法完整正…

Python基础语法详解,零基础入门必须掌握的知识点

文章目录 一、Python输出1、repr() 或 str() 转成字符串2、字符串填充空格进行格式化3、!a (使用 **ascii()**), !s (使用 **str()**) 和 !r (使用 **repr()**) 可以用于在格式化某个值之前对其进行转化 二、Python标识符三、Python保留字符(关键字)四、…

代码随想录算法训练营第四十五天| 70 爬楼梯 322 零钱兑换 279 完全平方数

目录 70 爬楼梯 322 零钱兑换 279 完全平方数 70 爬楼梯 本题可以转化为完全背包问题进行解答。 class Solution { public:int climbStairs(int n) {vector<int>f(n 2);f[0] 1;int m 2;for(int i 1;i < n;i){for(int j 1;j < m;j){if(i > j)f[i] f[i - j]…

[Python系列] 文字转语音

什么是TTS TTS 是 Text-to-Speech 的缩写&#xff0c;中文称为“文本到语音”。它是一种将书面文本转换为自然听起来的语音的技术。TTS 技术广泛应用于各种场景&#xff0c;如智能助手、语音合成、电子阅读器等。 TTS 技术通过机械的、电子的方法产生人造语音。它隶属于…

对Spring源码的学习:一

目录 BeanFactory开发流程 ApplicationContext BeanFactory与ApplicationContext对比 基于XML方式的Bean的配置 自动装配 BeanFactory开发流程 这里的第三方指的是Spring提供的BeanFactory&#xff0c;Spring启动时会初始化BeanFactory&#xff0c;然后读取配置清单&#…

外汇天眼:什么时段做外汇交易最好,有所谓的“最佳时间点”吗?

在外汇交易的时候&#xff0c;很多手动交易的投资者不知道到底什么时间段操作交易最适合自己。 我们在进行选择最佳交易时间的时候&#xff0c;一定要明白各时间段的全球各个市场的交易状况&#xff0c;这样你才能分配好自己的时间。 当然在通过技术分析与基本分析选择好币种后…

PostgreSQL 索引介绍和使用事项

索引内容 关键点 索引是一种数据结构&#xff0c;用于加快数据库查询的速度。它类似于书籍的目录&#xff0c;可以快速定位到特定的数据页。 PG数据库支持多种类型的索引&#xff0c;包括B树索引、哈希索引、GiST索引、SP-GiST索引和GIN索引等。 B树索引是PG数据库中最常用的…

Google刚发布AlphaCode 2,让我们码农多了个小伙伴一起干活

除了其Gemini生成式人工智能模型之外&#xff0c;谷歌今天早上发布了AlphaCode 2&#xff0c;这是谷歌DeepMind实验室大约一年前推出的代码生成AlphaCode的改进版本。 事实上&#xff0c;AlphaCode 2实际上由Gemini提供支持&#xff0c;或者至少是由Gemini的某个变体&#xff…

Linux学习教程(第十五章 Linux系统日志管理)

第十五章 Linux系统日志管理 系统日志详细地记录了在什么时间&#xff0c;哪台服务器、哪个程序或服务出现了什么情况。不管是哪种操作系统&#xff0c;都详细地记录了重要程序和服务的日志&#xff0c;只是我们很少养成查看日志的习惯。 日志是系统信息最详细、最准确的记录者…