rest_framework03:查詢所有/新增數據/刪除一個數據/封裝Response/序列化與反序列化

查詢所有

1.創建新clase和url,避免與查詢一個功能邏輯混亂。

2.增加many=True,

book_ser=BookSerializer(books,many=True)

urls.py:

 path('books/',views.BooksView.as_view())

views.py

class BooksView(APIView):def get(self,request):response_msg = {'status': 100, 'msg': '成功'}books=Book.objects.all()book_ser=BookSerializer(books,many=True) # 序列化多條。 如果一條,不需要寫response_msg['data']=book_ser.datareturn Response(response_msg)

新增數據

views.py內的新類BooksView,增加post

 # 新增def post(self,request):response_msg = {'status': 100, 'msg': '成功'}# 新增沒有instance,只有databook_ser=BookSerializer(data=request.data)# 如果沒有data=,會報錯。第一個參數是instance# book_ser = BookSerializer(request.data)# 校驗字段if book_ser.is_valid():book_ser.save()response_msg['data']=book_ser.dataelse:response_msg['status']=102response_msg['msg']='新增數據校驗失敗'response_msg['data']=book_ser.datareturn Response(response_msg)

在ser.py重寫create 方法

1.需要導入orm Book

2.需要返回

    def create(self, validated_data):instance=Book.objects.create(**validated_data)# 正常情況是按下面寫的,但是加**打散后是一樣,所以直接**# Book.objects.create(name=validated_data.get('name'))return instance

刪除一個數據

因為需要pk值,所以放入原來類BookView

    def delete(self,request,pk):ret=Book.objects.filter(pk=pk).delete()return Response({'status': 100, 'msg': '刪除成功'})

封裝Response

1.新建py文件。如utils.py

get_dic用于返回字典

class MyResponse():def __init__(self):self.status=100self.msg='成功'@propertydef get_dic(self):return self.__dict__if __name__ == '__main__':res=MyResponse()print(res.msg)

2.在views.py 導入并使用

注意:return Response(response.get_dic)

仍然使用rest_framework的Response返回,封裝的只是字典結構。

from app01.utils import MyResponseclass BooksView(APIView):# 使用封裝responsedef get(self, request):response=MyResponse()books = Book.objects.all()book_ser = BookSerializer(books, many=True)  # 序列化多條。 如果一條,不需要寫response.data = book_ser.datareturn Response(response.get_dic)# 新增def post(self, request):response=MyResponse()# 新增沒有instance,只有databook_ser = BookSerializer(data=request.data)# 如果沒有data=,會報錯。第一個參數是instance# book_ser = BookSerializer(request.data)# 校驗字段if book_ser.is_valid():book_ser.save()response.data = book_ser.dataelse:response.status = 102response.msg = '新增數據校驗失敗'response.data = book_ser.datareturn Response(response.get_dic)

序列化與反序列化

序列化:得到字典,可以理解為查詢操作。

反序列化:修改數據,可以理解為修改與新增操作

1.只傳data,執行save(),觸發create()方法執行

2.傳instance和data,執行save(),觸發update()方法執行

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280446.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280446.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280446.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何對DevOps數據庫進行源代碼控制

提綱: 包括索引在內的數據庫模式需要進行源代碼控制諸如查詢表這類用于控制業務邏輯的數據需要進行源代碼控制開發人員需要一種能夠便捷地創建本地數據庫的方法共享數據庫的更新只能通過構建服務器完成 健壯的DevOps環境需要對系統的每個組件進行持續集成。但是&…

自定義異常最佳實踐_播放,自定義和組織媒體的最佳文章

自定義異常最佳實踐Computers today are used for much more than generating documents, writing and receiving email, and surfing the web. We also use them to listen to music, watch movies and TV shows, and to transfer media to and from mobile devices. 如今&…

CSS中的路徑裁剪樣式clip-path

前面的話 CSS借鑒了SVG裁剪的概念,設置了clip-path樣式,本文將詳細介紹路徑裁剪clip-path 概述 clip-path屬性可以防止部分元素通過定義的剪切區域來顯示,僅通過顯示的特殊區域。剪切區域是被URL定義的路徑代替行內或者外部svg,或…

socket編程學習筆記

socket編程: 1、網絡基礎知識 兩臺計算機通過網絡進行通信,首先兩臺計算機要有唯一的標識,即唯一的IP地址。其次他們要有共同的語言用來交流即協議。再者,每套主機要有相應的端口號。  TCP/IP協議:   --TCP/IP協議是…

rest_framework04:ModelSerializer/Serializer高級用法

ModelSerializer 1.減小序列化類代碼 2.不需要重寫update,create ser.py class BookModelSerializer(serializers.ModelSerializer):class Meta:modelBookfields__all__ #序列化全部字段# fields(name,price) # 序列化指定字段# exclude(name,) # 與fields 不能…

配置本地及網絡yum源(詳細步驟)

我們以centos6為范例演示 1、[rootCentos6 ~]# cd /etc/yum.repos.d/ [rootCentos6 yum.repos.d]# ls CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repoCentOS-Debuginfo.repo CentOS-Media.repo先羅列出相關文件 2、[rootCentos6 yum.repos.d]# vim CentOS-Base.rep…

macos mojave_如何修復macOS Mojave上的模糊字體(使用亞像素抗鋸齒)

macos mojaveApple’s macOS Mojave disables subpixel antialiasing, also known as font smoothing, by default. On a MacBook Air or a desktop Mac hooked up to a non-Retina display, upgrading will make your fonts look worse. 蘋果的macOS Mojave默認情況下禁用子像…

為什么我要寫博客

原因在這啦 一、我覺得分享是一種精神,分享是我的樂趣所在,不是說我覺得我講得一定是對的,我講得可能很多是不對的,但是我希望我講的東西是我人生的體驗和思考,是給很多人反思,也許給你一秒鐘、半秒鐘&…

一個變量命名神器:支持中文轉變量名

變量命名的規范,對于我們編程,大家都知道是非常重要的,上次給大家推薦過一個命名輔助工具《程序員還在為變量取名苦惱,那是因為你不知道,這個變量命名神器》,但大家一致反饋存在2個問題:1、網速…

rest_framework05:GenericAPIView用法/擴展類5個/子類9個/ViewSetMixin 自定義方法名字

GenericAPIView 1.視圖層類使用GenericAPIView繼承,能簡化類里的方法code。 2.簡化后的方法code格式基本通用,簡單修改即可應用到其他類。 一、class開始加入 queryset Book.objectsserializer_class BookModelSerializer 二、方法里獲取對象 a.查…

1.操作系統概述

2019獨角獸企業重金招聘Python工程師標準>>> 操作系統的發展過程 無操作系統的計算機系統單道批處理系統(50年代,系統資源利用率低)多道批處理系統(60年代)分時系統(70年代)實時系統…

測聽hl和nhl的區別_播放NHL曲棍球的最便宜方法(無電纜)

測聽hl和nhl的區別If you’re like me, you watch hockey, and…basically no other sports. You also, like me, would like to skip the cable subscription. So what’s the cheapest way to watch NHL hockey online so you can cut the cord? 如果您像我一樣,…

制作一個讓客戶滿意的軟件

我看了《構建之法》的第八章“需求分析”我對如何制作一個讓客戶滿意的軟件有了一點兒頭緒,的但是還是有一些迷惑。我通過看書總結和百度查找有了一點兒總結:我們在制作軟件的過程中應該及時與用戶溝通交流,交換意見,并及時實現用…

rest_framework06:自動生成路由\action使用\認證

自動生成路由 # 1.導入routers模塊 from rest_framework import routers# 2.實例化類 routerrouters.SimpleRouter()# 3.注冊 # (前綴,繼承自ModelViewSet視圖類,別名) router.register(books7,views.BooksView) # 不要加斜杠# 4.加入 urlpatternsrouter.urls action使用 裝…

char data[0]在struct末尾的用法

在實際的編程中,我們經常需要使用變長數組,但是C語言并不支持變長的數組。此時,我們可以使用結構體的方法實現C語言變長數組。 struct MyData { int nLen; char data[0];}; 在結構中,data是一個數組名;但該數組沒有元素…

使用Java實現K-Means聚類算法

2019獨角獸企業重金招聘Python工程師標準>>> 關于K-Means介紹很多,還不清楚可以查一些相關資料。 個人對其實現步驟簡單總結為4步: 1.選出k值,隨機出k個起始質心點。 2.分別計算每個點和k個起始質點之間的距離,就近歸類。 3.最終中心點集可以劃分為…

在PowerShell中顯示高級進度條

如果你需要編寫一些PowerShell腳本,尤其在處理一些相對復雜的任務時,你可能希望添加進度條的功能,以便隨時可以了解進展情況。Write-Progress 這個命令可以幫助你完成簡單的需求,請參考官方文檔即可,但下圖一個示例&am…

當檢測到運動時如何自動打開門燈

If it’s dark out and someone comes to your door, you probably can’t see them unless your porch light is on. Furthermore, if a potential burglar approaches your front door, a motion light can help scare them away. 如果天黑了,有人進了您的門&…

分布式系統的那些事兒(六) - SOA架構體系

有十來天沒發文了,實在抱歉!最近忙著錄視頻,同時也做了個開源的后臺管理系統LeeCX,目前比較簡單,但是后續會把各類技術完善。具體可以點擊“原文鏈接”。 那么今天繼續說分布式系統的那些事。 我們現在動不動就講分布式…

rest_framework07:權限/頻率/過濾組件/排序/異常處理封裝Response對象

權限 寫一個類,繼承BasePermission,如果通過返回True,否則False 這里需要配合認證使用,否則沒有user_type屬性。 from rest_framework.permissions import BasePermissionclass UserPermission(BasePermission):def has_permis…