drf源碼save以及response

来源:https://www.cnblogs.com/pythonywy/archive/2019/09/05/11469915.html
-Advertisement-
Play Games

drf源碼save以及response 一.save python if self.instance is not None: self.instance = self.update(self.instance, validated_data) assert self.instance is not ...


drf源碼save以及response

一.save

其中蠻重要的一段

        if self.instance is not None:
            self.instance = self.update(self.instance, validated_data)
            assert self.instance is not None, (
                '`update()` did not return an object instance.'
            )
        else:
            self.instance = self.create(validated_data)
            assert self.instance is not None, (
                '`create()` did not return an object instance.'
            )

        return self.instance

這裡呢很明顯就可以看出save我們傳參instance的由於決定了他後續是運行create還是updata方法

我們也可以不用save,可以自定義create 方法和updata方法因為他本質就是調用create和updata方法

註意點:我們自定義優先順序必須大於drf自帶的方法的優先順序,所有我們把這兩個方法創建在模型中比較合適

二.response

其中的參數

#傳入的參數
def __init__(self, data=None, status=None,
                 template_name=None, headers=None,
                 exception=False, content_type=None):
    
#他對於參數進行的賦值
        self.data = data
        self.template_name = template_name
        self.exception = exception
        self.content_type = content_type

我們可以通過類的繼承來修改源碼

"""
返回值
Response({
    'status': 0,
    'msg': 'ok',
    'results': [],
    'token': ''
}, headers={}, status=200, content_type="")
"""
'''
比如說我們想要的效果
APIResponse(0, 'ok', results,其他數據)
'''

from rest_framework.response import Response
class APIResponse(Response):
    def __init__(self, data_status, data_msg, results=None,
                 status=None, headers=None, content_type=None, **kwargs):
        data = {
            'status': data_status,
            'msg': data_msg
        }
        if results is not None:
            data['results'] = results
        data.update(kwargs)
        super().__init__(data=data, status=status, headers=headers, content_type=content_type)

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • SQL優化(變多次維護為一次維護) Sql優化分為:DDL、DML、DQL 一、DDL優化 1 、通過禁用索引來提供導入數據性能 。 這個操作主要針對有資料庫的表,追加數據 //去除鍵 alter table test3 DISABLE keys; //批量插入數據 insert into test ...
  • Spring是一款輕量級。主要功能是ioc控制反轉,DI依賴註入,Aop面向切麵:解決的是在編程中的解耦合,硬編碼,很好的解決了程式的擴容及修改 1、ioc控制反轉:是spring的核心,是一種思想,是將Java中的對象都交由spring進行創建,生命周期,銷毀都是由spring進行控制,讓Java ...
  • 一、分表: 水平分表:根據條件把數據分為N個表(例如:商品表中有月份列,則可以按月份進行水平分表)。 使用場景:一張表中數據太多,查詢效率太慢。 當需要同時查詢被水平分表的多張表時: 在兩條SQL語句中間加union,就能把兩表數據合併展示。 union:數據合併時去重。 Union all:數據合 ...
  • # ##java客戶端連接到ElasticSearch伺服器 創建maven工程 添加坐標 最好跟伺服器elasticsearch一致 # ## 獲取TransportClient java程式連接elasticsearch通過TransportClient類 TransportClient類是一個 ...
  • 題目描述: 給定兩個整數 a, b (a, b 均不超過 int 類型的表示範圍),求出 a + b 的和。 輸入描述: 每行輸入兩個整數 a 和 b,用空格隔開。 輸出描述: a + b 的值。 樣例輸入: 1 2 樣例輸出: 3 ...
  • 今日所學: /* 2019.08.19開始學習,此為補檔。 */ ①char:只能有一個欄位。字元:' ' ②二進位:0000 0000 最後一位為0就不算,為1代表20。 如25為:0001 1001 24+23+20 = 16+8+1 = 25 ③final int A = 45; final聲 ...
  • 內容: 變數 字元串 數字和運算符 數據類型轉換 一、變數 1.定義:指在電腦編程中與關聯的標識符配對的記憶體存儲位置,在使用時含相關類型的值,該值可以修改。 當Python變數被使用時,在記憶體里會產生兩個動作:1.開闢新的記憶體地址;2.賦予指定的變數值 註意:變數被指定的同時,必須強制賦初始值,否 ...
  • NumPy 不會主動檢測並利用 GPU,雖然 NumPy 已經很好用了,但是能利用 GPU 的 NumPy 替代品速度會更快。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...