Django REST Framework(九)GenericAPIView视图子类

GenericAPIView 是 Django REST Framework (DRF) 中一个非常重要的类,它提供了常用的通用视图功能。通过继承 GenericAPIView,可以轻松地构建 RESTful API。

用法

  1. 导入所需模块

    from rest_framework import generics 
    from .models import BookModel 
    from .serializers import BookModelSerializer
  2. 创建视图

    你可以创建一个视图类,继承 GenericAPIView,并指定相应的查询集和序列化器。

    class BookModelListCreateView(generics.GenericAPIView): 
        queryset = BookModel.objects.all() 
        serializer_class = BookModelSerializer 
    def get(self, request, *args, **kwargs): 
        queryset = self.get_queryset() 
        serializer = self.get_serializer(queryset, many=True) 
        return Response(serializer.data) 
    def post(self, request, *args, **kwargs): 
        serializer = self.get_serializer(data=request.data)                
        serializer.is_valid(raise_exception=True) 
        serializer.save() 
        return Response(serializer.data, status=201)
  3. 使用 Mixins

    GenericAPIView 可以与 mixins 一起使用,以实现更具体的功能,如获取、更新、删除等。

    from rest_framework import mixins 
    class BookModelListCreateView(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView): 
        queryset = BookModel.objects.all() 
        serializer_class = BookModelSerializer 
    def get(self, request, *args, **kwargs): 
        return self.list(request, *args, **kwargs) 
    def post(self, request, *args, **kwargs): 
        return self.create(request, *args, **kwargs)
  4. 组合使用

    DRF 提供了多种组合类,如 ListCreateAPIViewRetrieveUpdateDestroyAPIView,这些都是 GenericAPIView 和 mixins 的组合。

    from rest_framework import generics 
    class BookModelListCreateView(generics.ListCreateAPIView): 
        queryset = BookModel.objects.all() 
        serializer_class = BookModelSerializer

常用功能

  • get_queryset():返回要查询的对象集合。
  • get_serializer():返回用于序列化和反序列化数据的序列化器实例。
  • perform_create():处理对象创建的逻辑,通常在 create() 方法中调用。

例子

from rest_framework import generics 
from .models import BookModel 
from .serializers import BookModelSerializer 
class BookModelDetailView(generics.RetrieveUpdateDestroyAPIView): 
    queryset = BookModel.objects.all() 
    serializer_class = BookModelSerializer

相关推荐

  1. Django REST Framework()GenericAPIView视图

    2024-07-17 11:50:03       25 阅读
  2. Django REST Framework(八)GenericAPIView5个视图扩展

    2024-07-17 11:50:03       20 阅读
  3. DjangoRestFramework概括

    2024-07-17 11:50:03       56 阅读
  4. 视图查询

    2024-07-17 11:50:03       26 阅读
  5. django接入djangorestframework-simplejwt步骤

    2024-07-17 11:50:03       29 阅读
  6. 继承关系

    2024-07-17 11:50:03       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 11:50:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 11:50:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 11:50:03       57 阅读
  4. Python语言-面向对象

    2024-07-17 11:50:03       68 阅读

热门阅读

  1. 【C++】C语言和C++的区别

    2024-07-17 11:50:03       21 阅读
  2. Angular 开发编码规约

    2024-07-17 11:50:03       27 阅读
  3. 2407d,让d的printf安全

    2024-07-17 11:50:03       30 阅读
  4. 【python】python装饰器整理

    2024-07-17 11:50:03       20 阅读
  5. 金豺狼优化算法(GWO)及其Python和MATLAB实现

    2024-07-17 11:50:03       25 阅读
  6. ChatGPT等模型SQL优化提示词

    2024-07-17 11:50:03       23 阅读
  7. 使用mysql shell搭建MGR

    2024-07-17 11:50:03       25 阅读
  8. 工作常用sql 总结-长期更新

    2024-07-17 11:50:03       18 阅读
  9. 基于深度学习的游戏AI

    2024-07-17 11:50:03       21 阅读
  10. Linux Kernel 6.10 释出

    2024-07-17 11:50:03       17 阅读
  11. Django跨域问题解决

    2024-07-17 11:50:03       20 阅读
  12. layui 监听弹窗关闭并刷新父级table

    2024-07-17 11:50:03       17 阅读
  13. 【Linux】基本指令

    2024-07-17 11:50:03       21 阅读
  14. Linux内存从0到1学习笔记(8.19 ION简介)---更新中

    2024-07-17 11:50:03       20 阅读
  15. D4:知识蒸馏

    2024-07-17 11:50:03       22 阅读