這篇文章主要為大家展示了“Serializer和ModelSerializer如何使用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Serializer和ModelSerializer如何使用”這篇文章吧。
學習了之前的文章我們知道如何使用Django REST framework框架設計API,我還使用Schools APP設計了一個API
除此之外,我們還可以查看API的OPTIONS,然后可以得很多信息,比如說第一行請求行’HTTP 200 OK’,表示請求成功,第二行Allow表示允許的請求方式,Content-Type:application/json表示發(fā)送端發(fā)送的實體數(shù)據(jù)的數(shù)據(jù)類型。
還有下面的json數(shù)據(jù),name表示接口名字、description詳細描述、renders表示可解析的形式,parses是服務器端可解析的三種方式
我們還可以在app的views.py的類中可以給API添加注釋,如比給前端人員的接口說明等信息,且注釋可以在Django REST Framework的頁面中顯示;
class AllSchoolsView(APIView): """ 這是AllSchoolsView的返回結果 """ def get(self, request): schools = School.objects.all() schools_serializer = SchoolSerializer(schools, many=True) return Response(schools_serializer.data)
然后重新運行項目,然后刷新頁面,我們就可以得到如圖的效果:
首先為了避免在Django REST Framework 中登錄時報錯'CSRFCheck' object has no attribute 'process_request'
,我們需要將Django升級到1.11.6以上的版本:pip install django==1.11.6
,記得是兩個等號喲。然后用戶就可以使用之前創(chuàng)建的超級用戶成功登錄了
GET(SELECT)
:從服務器取出資源(一項或多項);
POST(CREATE)
:在服務器新建一個資源;
PUT(UPDATE)
:在服務器更新資源(客戶端提供改變后的完整資源);
PATCH(UPDATE)
:在服務器更新資源(客戶端提供改變的屬性);
DELETE(DELETE)
:從服務器刪除資源;
HEAD
:獲取資源的元數(shù)據(jù);
OPTIONS
:獲取信息,關于資源的哪些屬性是客戶端可以改變的;
首先編輯serializer.py文件,將SchoolSerializer類中的字段與School表中的字段一一對應,保證數(shù)據(jù)庫寫入不會報錯;
from rest_framework import serializers from .models import School class SchoolSerializer(serializers.Serializer): name = serializers.CharField() desc = serializers.CharField() location = serializers.CharField() create_time = serializers.DateTimeField(default=datetime.now,) course_numbers = serializers.IntegerField() def create(self, validated_data): """ Create and return a new `Snippet` instance, given the validated data. """ return School.objects.create(**validated_data)
然后編輯views.py文件,修改AllSchoolsView類,新增一個post提交方法,在代碼中打上斷點;
from rest_framework.views import APIView from .serializer import SchoolSerializer from rest_framework.response import Response from rest_framework import status class AllSchoolsView(APIView): """ 這是AllSchoolsView的返回結果 """ def get(self, request): schools = School.objects.all() schools_serializer = SchoolSerializer(schools, many=True) return Response(schools_serializer.data) def post(self, request): # 將request.data的數(shù)據(jù)進行校驗 # request.data會拿到post提交的字段 serializer = SchoolSerializer(data=request.data) # 如果驗證字段合法 if serializer.is_valid(): # 直接保存到數(shù)據(jù)庫,這里會調(diào)用GoodsSerializer的create方法 serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
然后可以使用postman進行提交請求,先在Body中選擇x-www-form-urlencoded的提交方式,然后填寫好相應字段的值
然后發(fā)送send,在post方法中把得到的數(shù)據(jù)封裝且進行序列化,返回到序列化對象serializer中,最后通過save方法保存到數(shù)據(jù)庫中,然后我們訪問http://127.0.0.1:12345/school/all/
,得到的數(shù)據(jù)是不是增加了一條新的記錄呀
還可以直接在瀏覽器的頁面中進行post請求,先選擇提交格式,然后創(chuàng)建相應數(shù)據(jù),直接點擊POST,如果返回HTTP 201 Created,則數(shù)據(jù)已經(jīng)被創(chuàng)建,寫入了數(shù)據(jù)庫中;
以上是“Serializer和ModelSerializer如何使用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司行業(yè)資訊頻道!
當前標題:Serializer和ModelSerializer如何使用-創(chuàng)新互聯(lián)
URL分享:http://chinadenli.net/article26/djgscg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設、域名注冊、網(wǎng)站導航、App開發(fā)、自適應網(wǎng)站、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容