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.pswp.cn/news/206919.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/206919.shtml
英文地址,請注明出處:http://en.pswp.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;只是我們很少養成查看日志的習慣。 日志是系統信息最詳細、最準確的記錄者…