美文网首页
restframework View总结

restframework View总结

作者: dc630f46ee2d | 来源:发表于2017-12-16 02:03 被阅读0次

继承APIView 完成视图功能

步骤很简单,
1.数据库读取数据,
2.查询结果序列化,
3.返回给前端

class SnippetList(APIView):
    """
    List all snippets, or create a new snippet.
    """
    def get(self, request, format=None):
        snippets = Snippet.objects.all()
        serializer = SnippetSerializer(snippets, many=True)
        return Response(serializer.data)

继承(GenericAPIView ,mixIns中的类)来简化代码

GenericAPIView继承APIView,提供了querysetserializer_class
get_queryset属性等。
mixIns是一个py文件。有四个类CreateModelMixin,ListModelMixin,RetrieveModelMixin,UpdateModelMixin。以获取列表页数据为例,使用ListModelMixin类。实际上,这些mixin独立使用几乎毫无意义,他们调用的是GenericAPIView中定义的方法和属性。
这两个类配合使用也很简单
1.重写GenericAPIView的属性,指定querySet和serializer_class类
2.调用mixIns类的方法

class SnippetList(mixins.ListModelMixin,
                  generics.GenericAPIView):
    queryset = Snippet.objects.all()          ---------- GenericAPIView的属性
    serializer_class = SnippetSerializer   ----------- GenericAPIView的属性
    
     def get(self, request, *args, **kwargs):  ---------Django视图类都要重写这个(set/get)方法,
     return self.list(request, *args, **kwargs) -------- ListModelMixin的方法

self.list会返回django rest 的Response给前端的。而queryset,serializer_class的值会间接被ListModelMixin的list方法读取。

直接用多继承GenericAPIView和mixIns的类来简化代码

我们固然可以使用上面自己继承两个类的方法来实现我们的需求,实际上rest 自己也预留类一些合适的组合,并且组合中写好了get或者post方法对应调用的mixin的处理方法。这种类叫做
mixed-in generic views

屏幕快照 2017-12-16 上午1.50.26.png
class ListAPIView(mixins.ListModelMixin,
                  GenericAPIView):
    """
    Concrete view for listing a queryset.
    """
    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

最终我们的类可以这样写.

class GoodsListView(generics.ListAPIView):
    """
    商品列表页
    """
    queryset = Goods.objects.all()
    serializer_class = GoodsSerializer

总结

GenericAPIView和mixIns总是配合使用。业务要做的事情很简单,多继承他们,1是给GenericAPIView 一些关键属性赋值,2是调用mixIns的对应方法。

相关文章

  • restframework View总结

    继承APIView 完成视图功能 步骤很简单,1.数据库读取数据,2.查询结果序列化,3.返回给前端 继承(Gen...

  • django restframework View总结2

    ViewSet.py ViewSet.py的类结构如下: 我们从GenericAPIView看起, Generic...

  • Django测试开发学习笔记(三)

    restframework restframework简介 它是基于Django的,帮助我们快速开发符合restf...

  • RestFramework

    what‘s the RESTful RestFramework是一个能快速为我们提供API接口,方便我们编程的框...

  • restframework 分页

    分页 REST framework 包含对可定制分页样式的支持。这使你可以将较大的结果集分成单独的数据页面。分页 ...

  • restframework分页

    普通分页 APIView使用分页

  • Android View总结

    作者:threezj原文地址:Android View总结 关于Android View控件 Android中控件...

  • view总结

    纯粹是个人学习总结,如有不对的地方请吐槽。 LayoutInflater的基本用法:LayoutInflater ...

  • view总结

  • 知识点总结

    知识点总结 Android View View的滑动方式layout(left,top,right,bottom)...

网友评论

      本文标题:restframework View总结

      本文链接:https://www.haomeiwen.com/subject/irorwxtx.html