• Django REST framework


    Django REST framework 视图GenericAPIView

    GenericAPIView

    这个类扩展了REST框架的APIView类,通过GenericAPIView与一个或多个mixin类组合而构建的

    例子

    在使用通用视图时,将覆盖原视图,并设置多个类属性

    from django.contrib.auth.models import User
    from myapp.serializers import UserSerializer
    from rest_framework import generics
    from rest_framework.permissions import IsAdminUser
    
    class UserList(generics.ListCreateAPIView):
        queryset = User.objects.all()
        serializer_class = UserSerializer
        permission_classes = (IsAdminUser,)
    

    多对多的关系下

    class UserList(generics.ListCreateAPIView):
        queryset = User.objects.all()
        serializer_class = UserSerializer
        permission_classes = (IsAdminUser,)
    
        def list(self, request):
            # Note the use of `get_queryset()` instead of `self.queryset`
            queryset = self.get_queryset()
            serializer = UserSerializer(queryset, many=True)
            return Response(serializer.data)
    

    特别简单的情况下还可以通过`.asview()方法传递任何类属性

    url(r'^/users/', ListCreateAPIView.as_view(queryset=User.objects.all(), serializer_class=UserSerializer), name='user-list')
    

    属性

    基本设置:

    以下属性控制基本视图行为。

    1. `queryset` - 为从此视图中返回的对象的查询集, 通常必需设置.如果要覆盖此视图,需要调用`get_queryset()`方法
    2. `serializer_class` - 用于验证和反序列化输入以及序列化输出的序列化程序类。通常,您必须设置此属性,或覆盖该`get_serializer_class()`方法。
    3. `lookup_field` - 应该用于执行单个模型实例的对象查找的模型字段。默认为'`pk`'。请注意,使用超链接的API时,您需要确保双方的API意见和串行类设置查找字段,如果你需要使用一个自定义值。
    4. `lookup_url_kwarg` - 应该用于对象查找的URL关键字参数。URL conf应包含与此值对应的关键字参数。如果未设置,则默认使用与之相同的值`lookup_field`。
    

    混入

    mixin类提供用于提供基本视图行为的操作。请注意,mixin类提供了操作方法,而不是直接定义处理程序方法,例如.get()和.post()。这允许更灵活的行为组合。

    mixin类可以从中导入rest_framework.mixins

    LisrModelMixin - 提供一种.list(request, *args, **kwargs)实现列出查询集的方法。
    
    CreateModelMixin - 提供.create(request, *args, **kwargs)实现创建和保存新模型实例的方法。
    
    RetrieveModelMixin - 提供一种.retrieve(request, *args, **kwargs)方法,该方法实现在响应中返回现有模型实例。
    
    UpdateModelMixin - 提供一种.update(request, *args, **kwargs)方法,用于实现更新和保存现有模型实例。
    
    DestoryModelMixin - 提供.destroy(request, *args, **kwargs)实现删除现有模型实例的方法。
    

    具体视图类

    在混入类的基础上进行封装, 如果不需要大量的自定义行为,可以从中导入视图rest_framework.generics

    CreateAPIView

    用于仅创建端点。
    提供post方法处理程序。
    

    ListAPIView

    用于只读端点以表示模型实例的集合。
    提供get方法处理程序。
    

    RettieveAPIView

    用于只读端点以表示单个模型实例。
    提供get方法处理程序。
    

    UpdateAPIAView

    用于单个模型实例的仅更新端点。
    提供put和patch方法处理程序。
    

    ListCrrateAPIView

    用于读写端点以表示模型实例的集合。
    提供get和post方法处理程序。
    

    RetrieveUpdateAPIView

    用于读取或更新端点以表示单个模型实例。
    提供get,put并且patch方法处理。
    

    RetrieveDestroyAPIView

    用于读取或删除端点以表示单个模型实例。
    提供get和delete方法处理程序。
    

    RetrieveUpdateDestroyAPIView

    用于读写 - 删除端点以表示单个模型实例。
    提供get,put,patch和delete方法处理。
    

    自定义基类

    如果您在多个视图中使用mixin,则可以更进一步,创建自己的一组基本视图,然后可以在整个项目中使用。例如:

    class BaseRetrieveView(MultipleFieldLookupMixin,
                           generics.RetrieveAPIView):
        pass
    
    class BaseRetrieveUpdateDestroyView(MultipleFieldLookupMixin,
                                        generics.RetrieveUpdateDestroyAPIView):
        pass
    

    https://img2018.cnblogs.com/blog/1479869/201901/1479869-20190114220105178-568867006.png

  • 相关阅读:
    Lesson15——NumPy 数学函数
    Lesson18——NumPy 逻辑函数
    Lesson16——NumPy 逻辑函数
    python 计算程序运行时间
    Mac OSX 鼠标键盘事件的监听和模拟
    Qt多显示器全屏显示
    连接Android设备
    Qt编译报错:error:main.obj:multiple definition of 'main'
    QT Mac TitleBar 处理
    google浏览器
  • 原文地址:https://www.cnblogs.com/konghui/p/10351906.html
Copyright © 2020-2023  润新知