django rest文檔好少,restframework 第一天

 2023-10-18 阅读 20 评论 0

摘要:總結:?? ???? 1 reuqest類----源碼?? ??? ??? ??? ?2 restframework 下的APIView--源碼?? ??? ??? ??? ?? url(r'^books/$', views.BookView.as_view(),name="books")#? View下的view?? ??? ?? books/一旦被訪問: view(request) ------APIV

總結:
?? ???? 1 reuqest類----源碼
?? ??? ?
?? ??? ?2 restframework 下的APIView--源碼
?? ??? ?
?? ??? ?? url(r'^books/$', views.BookView.as_view(),name="books")#? View下的view

?? ??? ?? books/一旦被訪問: view(request) ------APIView: dispatch()
?? ??? ?
?? ??? ?3 def dispatch():
?? ??? ?
?? ??? ??? ?? 構建request對象
?? ??? ??? ?? self.request=Request(request)
?? ??? ??? ?? self.request._request
?? ??? ??? ?? self.request.GET? # get
?? ??? ??? ?? self.request.data # POST? PUT
?? ??? ? ?
?? ??? ??? ?? 分發----if get請求:
?? ??? ??? ??? ??? ?if request.method.lower() in self.http_method_names:
?? ??? ??? ??? ??? ??? ?handler = getattr(self, request.method.lower(),
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ? self.http_method_not_allowed)
?? ??? ??? ??? ??? ?else:
?? ??? ??? ??? ??? ??? ?handler = self.http_method_not_allowed? ?

?? ??? ??? ??? ??? ?response = handler(request, *args, **kwargs) # self.get(request, *args, **kwargs)
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?return response?? ??? ??? ??? ?
?? ??? ??? ?
?? ??? ?4 序列化類
?? ??? ???? # from django.core import serializers
??????????? # ret=serializers.serialize("json",publish_list)
?? ??? ?
?? ??? ???? restframework下的序列類? BookModelSerializers
?? ??? ??? ???? 將queryset或者model對象序列成一json數據
?? ??? ??? ??? ??? ?bs=BookModelSerializers(book_list,many=True,context={'request': request})
?? ??? ??? ??? ??? ?bs=BookModelSerializers(book,context={'request': request})
?? ??? ?? ?
?? ??? ???????? 還可以做校驗數據,json-------》queryset/model-->記錄
?? ??? ??? ??? ?
?? ??? ??? ??? ??? ?bs=BookModelSerializers(data=request.data)
?? ??? ??? ??? ??? ?if bs.is_valid():
?? ??? ??? ??? ??? ??? ?print(bs.validated_data)
?? ??? ??? ??? ??? ??? ?bs.save() # 重寫create方法
?? ??? ?5 操作數據:
?? ??? ?
?? ??? ???? 以Book表為例
?? ??? ??? ???? class BookView(APIView):
?? ??? ??? ??? ???? # 查看所有書籍
?? ??? ??? ??? ??? ?def get(self,request):
?? ??? ??? ??? ??? ??? ?book_list=Book.objects.all()
?? ??? ??? ??? ??? ??? ?bs=BookModelSerializers(book_list,many=True,context={'request': request})
?? ??? ??? ??? ??? ??? ?return Response(bs.data)
?? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?# 添加一本書籍?? ?
?? ??? ??? ??? ??? ?def post(self,request):
?? ??? ??? ??? ??? ??? ?# post請求的數據
?? ??? ??? ??? ??? ??? ?bs=BookModelSerializers(data=request.data)
?? ??? ??? ??? ??? ??? ?if bs.is_valid():
?? ??? ??? ??? ??? ??? ??? ?print(bs.validated_data)
?? ??? ??? ??? ??? ??? ??? ?bs.save()# create方法
?? ??? ??? ??? ??? ??? ??? ?return Response(bs.data)
?? ??? ??? ??? ??? ??? ?else:
?? ??? ??? ??? ??? ??? ??? ?return Response(bs.errors)

?? ??? ??? ??? ?class BookDetailView(APIView):
??????????????????? # 查看一本書籍
?? ??? ??? ??? ??? ?def get(self,request,id):

?? ??? ??? ??? ??? ??? ?book=Book.objects.filter(pk=id).first()
?? ??? ??? ??? ??? ??? ?bs=BookModelSerializers(book,context={'request': request})
?? ??? ??? ??? ??? ??? ?return Response(bs.data)
??????????????????? # 更新一本書籍
?? ??? ??? ??? ??? ?def put(self,request,id):
?? ??? ??? ??? ??? ??? ?book=Book.objects.filter(pk=id).first()
?? ??? ??? ??? ??? ??? ?bs=BookModelSerializers(book,data=request.data)
?? ??? ??? ??? ??? ??? ?if bs.is_valid():
?? ??? ??? ??? ??? ??? ??? ?bs.save()
?? ??? ??? ??? ??? ??? ??? ?return Response(bs.data)
?? ??? ??? ??? ??? ??? ?else:
?? ??? ??? ??? ??? ??? ??? ?return Response(bs.errors)
??????????????????? # 刪除某一本書籍
?? ??? ??? ??? ??? ?def delete(self,request,id):
?? ??? ??? ??? ??? ??? ?Book.objects.filter(pk=id).delete()

?? ??? ??? ??? ??? ??? ?return Response()

轉載于:https://www.cnblogs.com/l-jie-n/p/9872122.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/149662.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息