基于视图子类实现接口

基于视图子类实现接口

11.1 视图子类介绍#

(1) CreateAPIView#

提供 post 方法

继承自: GenericAPIView、CreateModelMixin

(2)ListAPIView#

提供 get 方法

继承自:GenericAPIView、ListModelMixin

(3)RetireveAPIView#

提供 get 方法

继承自: GenericAPIView、RetrieveModelMixin

(4)DestoryAPIView#

提供 delete 方法

继承自:GenericAPIView、DestoryModelMixin

(5)UpdateAPIView#

提供 put 和 patch 方法

继承自:GenericAPIView、UpdateModelMixin

(6)RetrieveUpdateAPIView#

提供 get、put、patch方法

继承自: GenericAPIView、RetrieveModelMixin、UpdateModelMixin

(7)RetrieveUpdateDestoryAPIView#

提供 get、put、patch、delete方法

继承自:GenericAPIView、RetrieveModelMixin、UpdateModelMixin、DestoryModelMixin

(8)RetrieveDestoryAPIView#

提供 get、delete方法

继承自:GenericAPIView、RetrieveModelMixin、DestoryModelMixin

(9)ListCreateAPIView#

提供 get、post方法

继承自:GenericAPIView、ListModelMixin、CreateModelMixin

11.2 快速实现接口#

视图

"""
视图子类是通用视图类和模型扩展类的子类
    ListAPIView = GenericAPIView + ListModelMixin           获取多条数据
    CreateAPIView = GenericAPIView + CreateModelMixin       添加一条数据
    RetrieveAPIView = GenericAPIView + RetrieveModelMixin   获取一条数据
    UpdateAPIView = GenericAPIView + UpdateModelMixin       更新一条数据
    DestroyAPIView = GenericAPIView + DestroyModelMixin     删除一条数据
组合视图子类:
    ListCreateAPIView = ListAPIView + CreateAPIView
    RetrieveUpdateAPIView = RetrieveAPIView + UpdateAPIView
    RetrieveDestroyAPIView = RetrieveAPIView + DestroyAPIView
    RetrieveUpdateDestroyAPIView = RetrieveAPIView + UpdateAPIView + DestroyAPIView
"""
from rest_framework.generics import ListAPIView, CreateAPIView, UpdateAPIView, RetrieveAPIView, DestroyAPIView,ListCreateAPIView,RetrieveUpdateDestroyAPIView
from app.models import studentsInfo
from .serializers import StudentModelSerializer

# class StudentView1(ListAPIView, CreateAPIView):
class StudentView1(ListCreateAPIView):
    queryset = studentsInfo.objects.all()
    serializer_class = StudentModelSerializer


# class StudentView2(UpdateAPIView, RetrieveAPIView, DestroyAPIView):
class StudentView2(RetrieveUpdateDestroyAPIView):
    queryset = studentsInfo.objects.all()
    serializer_class = StudentModelSerializer

路由

from django.urls import path, re_path
from . import views

urlpatterns = [
    # APIView
    path('students/', views.StudentView.as_view()),
    re_path(r'^students/(?P<pk>\d+)/$', views.StudentAPIView.as_view()),

    # GenericAPIView
    path('students2/', views.StudentGenericAPIView.as_view()),
    re_path(r'^students2/(?P<pk>\d+)/$', views.StudentGenericAPIView2.as_view()),

    # GenericAPIView和mixin
    path('students3/', views.StudentGenericAPIViewMixin.as_view()),
    re_path(r'^students3/(?P<pk>\d+)/$', views.StudentGenericAPIViewMixin2.as_view()),

    # 视图子类
    path('students4/', views.StudentView1.as_view()),
    re_path(r'^students4/(?P<pk>\d+)/$', views.StudentView2.as_view())
]

作者:minqiliang

出处:https://www.cnblogs.com/minqiliang/p/16822167.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   minqiliang  阅读(72)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
-->
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示