zoukankan      html  css  js  c++  java
  • mixins,generics(ApiView)

    #生成序列化对象
    class BookModelSerizter(serializers.ModelSerializer):
      class Meta:

     model=Book
     fields='__all__'
    ##下面相当于是加个连接url,当你访问那个url的时候,就进行反向解析这个url
    # author = serializers.HyperlinkedIdentityField(
    # view_name='book_detail', ##反向解析
    # lookup_field='author_id', ##这里是取这个id值,当你循环到那个外键的那个id值的值的时候,作为参数传进去
    # lookup_url_kwarg='pk' ##把还是那个面的id作为参数传进去,就是在url路由里面的有名分组
    # )
    author=serializers.HyperlinkedIdentityField(
    view_name="book_detail",
    lookup_field="author_id",
    lookup_url_kwarg="pk"
    )








    #整个流程的基础是基于apiview执行的
    from rest_framework import mixins
    from rest_framework import generics
    class book(mixins.ListModelMixin,mixins.CreateModelMixin,generics.GenericAPIView):#首先从前面开始执行,到后面是进行调用这前面的方法
    ####之前的list的方法会找到下面的get_queryset,但里面是没有的,具会去子类里面去找,最终会找到GenericAPIView里面的get_queryset的方法,self.query=get_queryset,最终就是自己定义的下面的query方法
    queryset = Book.objects.all()
    serializer_class=BookModelSerizter
    ##拿到这个自定的序列化的类的对象

    def get(self, request, *args, **kwargs):###得到所有的数据,调用下面的方法
    return self.list(request, *args, **kwargs)


    def post(self, request, *args, **kwargs):##创建数据,调用下面的方法create
    return self.create(request, *args, **kwargs)




    class bookdetail(mixins.RetrieveModelMixin,mixins.DestroyModelMixin,mixins.UpdateModelMixin,generics.GenericAPIView):
    ##注明一下,这个第一个是得到数据,第二个是删除单条数据,第三个是修改数据,最后执行这个GenericAPIView,里面进行了得到这个queryset,modelobj对象的处理,在这里最终执行的操作


    queryset = Book.objects.all()
    serializer_class = BookModelSerizter
    ##调用父类的序列化的方法,serializer_class 在GenericAPIView类下面有做处理

    def get(self,request,*args,**kwargs):
    #得到数据单条数据
    return self.retrieve(request,*args,**kwargs)##执行下面的函数部分,调用这个函数

    def delete(self,request,*args,**kwargs):
    #删除数据单条数据
    return self.destroy(request,*args,**kwargs)#调用DestroyModelMixin类下面的destory方法


    def put(self,request,*args,**kwargs):
    #修改数据,update的操作(修改单条数据)
    return self.retrieve(request,*args,**kwargs)




  • 相关阅读:
    div显示和隐藏
    C语言求素数的算法
    日志分析概述
    Base64编码 概念和用途
    leetcode
    hdu2665-Kth number
    为什么要新加入的人不闻不问?
    实现微博@@@
    JAVA运行程序代码段
    IfSpeed 带宽计算
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/9847553.html
Copyright © 2011-2022 走看看