一、视图类
1、写 publish: 查询所有,查询单条,修改一条,新增一条,删除一条的接口
class PublishView(ListCreateAPIView):
queryset = Publish.objects.all()
serializer_class = PublishSerializer
class PublishDetailView(RetrieveUpdateDestroyAPIView):
queryset = Publish.objects.all()
serializer_class = PublishSerializer
2、写 publish 查询单条,新增一条的接口--->使用9个视图子类编写
class PublishView(CreateAPIView):
queryset = Publish.objects.all()
serializer_class = PublishSerializer
class PublishDetailView(RetrieveAPIView):
queryset = Publish.objects.all()
serializer_class = PublishSerializer
3、写 publish: 查询单条,新增一条,的接口--->使用5个视图扩展类+GenericAPIView
class PublishView(GenericAPIView,CreateModelMixin):
queryset = Publish.objects.all()
serializer_class = PublishSerializer
def post(self,request,*args,**kwargs):
return self.create(request,*args,**kwargs)
class PublishDetailView(GenericAPIView,RetrieveModelMixin):
queryset = Publish.objects.all()
serializer_class = PublishSerializer
def get(self,request,*args,**kwargs):
return self.retrieve(request,*args,**kwargs)
二、视图集
1、
from rest_framework.viewsets import ModelViewSet
class PublishView(ModelViewSet):
queryset = Publish.objects.all()
serializer_class = PublishSerializer
class PublishDetailView(ModelViewSet):
queryset = Publish.objects.all()
serializer_class = PublishSerializer
2、修改路由
在路由.as_view()中:写一个字典,请求方法对应接口增删改查方法
urlpatterns = [
path('publishs/', PublishView.as_view({'get': 'list', 'post': 'create'})),
path('publishs/<int:pk>', PublishDetailView.as_view({'get': 'retrieve', 'put': 'update', 'delete': 'destroy'})),
]
3、
三、路由
1、
2、
3、