首页 > 其他分享 >两个视图基类GenericAPIView,APIView

两个视图基类GenericAPIView,APIView

时间:2023-05-22 19:23:17浏览次数:41  
标签:GenericAPIView code ser get request self APIView 视图 data

基于两个视图基类GenericAPIView,APIView

class Bookserializers(serializers.ModelSerializer):
    # name = serializers.CharField()
    # price = serializers.CharField()
    # publish_id = serializers.CharField(write_only=True)
    # Authors = serializers.ListField(write_only=True)
    Authors_list = serializers.ListField(read_only=True)
    publish_dict = serializers.DictField(read_only=True)

    class Meta:
        model = Book
        # feilds = "__all__"
        fields = ['name', 'price', 'publish', 'Authors', 'Authors_list', 'publish_dict']
        extra_kwargs = {

        }
class BookAPIView(APIView):
    def get(self, request):
        book = Book.objects.all()
        ser = Bookserializers(instance=book, many=True)
        return Response({"code": 200, "msg": "查询成功", "result": ser.data})

    def post(self, request):
        ser = Bookserializers(data=request.data)
        if ser.is_valid():
            ser.save()
            return Response({"code": 200, "msg": "增加成功", "result": ser.data})
        return Response({"code": 200, "msg": "增加失败", "result": ser.errors})


class BookDeaileAPIView(APIView):
    def get(self, request, *args, **kwargs):
        book = Book.objects.filter(pk=kwargs.get("pk")).first()
        ser = Bookserializers(instance=book, many=True)
        return Response({"code": 200, "msg": "查询成功", "result": ser.data})

    def put(self, request, *args, **kwargs):
        book = Book.objects.filter(pk=kwargs.get("pk")).first()
        ser = Bookserializers(instance=book, many=False, data=request.data)
        if ser.is_valid():
            ser.save()
            return Response({"code": 200, "msg": "修改成功", "result": ser.data})
        return Response({"code": 200, "msg": "修改败", "result": ser.errors})

    def delete(self, request, *args, **kwargs):
        Book.objects.filter(pk=kwargs.get("pk")).delete()

        return Response({"code": 200, "msg": "删除成功"})


class BookGenericAPIView(GenericAPIView):
    queryset = Book.objects.all()
    serializer_class = Bookserializers

    def get(self, request):
        book = self.get_queryset()
        ser = self.get_serializer(book, many=True)
        return Response({"code": 200, "msg": "查询成功", "result": ser.data})

    def post(self, request):
        ser = self.get_serializer(data=request.data)
        if ser.is_valid():
            ser.save()
            return Response({"code": 200, "msg": "增加成功", "result": ser.data})
        return Response({"code": 200, "msg": "增加失败", "result": ser.errors})


class BookDeleailGenericAPIView(GenericAPIView):
    queryset = Book.objects.all()
    serializer_class = Bookserializers

    def get(self, request, *args, **kwargs):
        ser = self.get_serializer(self.get_object(), many=False)
        return Response({"code": 200, "msg": "查询成功", "result": ser.data})

    def put(self, request, *args, **kwargs):
        ser = self.get_serializer(self.get_object(), data=request.data)
        if ser.is_valid():
            ser.save()
            return Response({"code": 200, "msg": "修改成功", "result": ser.data})
        return Response({"code": 200, "msg": "修改失败", "result": ser.errors})

    def delete(self, request, *args, **kwargs):
        self.get_object().delete()
        return Response({"code": 200, "msg": "删除成功"})

标签:GenericAPIView,code,ser,get,request,self,APIView,视图,data
From: https://www.cnblogs.com/liyuanxiangls/p/17421503.html

相关文章

  • MFC视图切换大全总结
    单纯视图之间的切换单文档多视图切换是我在学习MFC中遇到的一个老大难问题,在今天总算是一一破解了。我觉得视图切换分为三个等级,第一是在未切分窗格的情况下切换视图类;第二是在分割窗格的一个窗格内实行视图切换;第三是在分割窗格和未分割之间的切换和视图切换。在MFC创建SDI的伊......
  • mysql基础_视图
    介绍MySQL视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的。优点定制用户数据,聚焦特定的数据简化数据操作提高数据的安全性共享所需数据......
  • drf之APIView+序列化类+Response
    昨日回顾#0ser=BookSerialzier(instance=qs,many=True)---->ListSerializer[序列化对象,序列化对象]ser=BookSerialzier(instance=book)---->BookSerialzier#1定制序列化的字段之source,字段参数 -指定一个要序列化的对象中得字段-指定一个要序列化的对象中得方法,方......
  • 模块与包,反序列化源码解析,drf请求响应,视图组件两个视图基类
    0模块与包的使用#模块与包 -模块:一个py文件,被别的py文件导入使用,这个py文件称之为模块,运行的这个py文件称之为脚本文件-包:一个文件夹下有__init__.py#模块与包的导入问题 '''0导入模块有相对导入和绝对导入,绝对的路径是从环境变量开始的1......
  • ORACLE同步数据(dblink+物化视图)
    1.创建dblink createpublicdatabaselinkxirEvalDBlinkconnectto"XIR_TRD"identifiedby"xpar"USING'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=191.168.0.11)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_......
  • Oracle中dba,user,v$等开头的常用表和视图
    1、https://blog.csdn.net/a545812327/article/details/123146508或者遇见了也不知道是做什么用的,该文档主要用来供各位参考,以便更好的使用Oracle,有错误、缺失的地方欢迎指正。1Oracle常用表1.1dba_开头表1.2user_开头表1.3v$_开头表1.4all_开头表1.5session_开头表1.6i......
  • SqlServer查询存储过程和视图是否用到表字段
     查询存储过程视图是否用到表和字段selectnamefromsysobjectsassinnerjoinsyscommentsasoons.id=o.idwheretextlikeN'%表名%字段名%'--查询表字段SELECTOBJECT_NAME(object_id)'表名',nameAS'列名称'FROMsys.columns......
  • Flask003_ URL 与视图
    [email protected]中的第一个字符串参数叫作URL。“/”代表网站的根路径,只要在浏览器中输入网站的域名即可访问到“/”。视图函数被@app.route装饰的函数叫作视图函数。......
  • 玩转MYSQL数据库之--视图详解
    前言从今天开始本系列文章就带各位小伙伴学习数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深, 全面讲解数据库体系。 非常适合零基础的小伙伴来学习。全文大约【1297】字,不说废话,只讲可以让你学到技术、明白原理的纯......
  • Restful规范,序列化和反序列化,drf介绍,drf之APIView源码分析
    Restful规范:-RESTful是一种定义API接口的设计风格,AIP接口的编写规范,,尤其适用于前后端分离的应用模式中-这种风格的理念认为后端开发任务就是提供数据的,对外提供的是数据资源的访问接口,所以在定义接口时,客户端访问的URL路径就表示这种要操作的数据资源-我们可以使用......