关系
from rest_framework.generics import GenericAPIView
from rest_framework.viewsets import ViewSetMixin, GenericViewSet
ViewSetMixin+GenericAPIView = GenericViewSet
路由
# 列表的 'get':'list'
# 单个的 'get':'retrieve','post':'create','put':'update','delete':'destroy'
urlpatterns = [
path('blog/', blogViews.BlogView.as_view({'get': 'list', 'post': 'create'}), name='blog'),
path('blog/<int:pk>/', blogViews.BlogView.as_view({'get': 'retrieve'}), name='blog_detail'),
]
view
class BlogView(GenericViewSet):
queryset = models.Blog.objects.order_by('-id').all()
serializer_class = BlogModelSerializer
pagination_class = MyPageNumberPagination
"""
list:
返回所有blog
create:
添加博客
retrieve:
返回单个blog
"""
authentication_classes = [ParamsAuthentication, ]
def list(self, request, *args, **kwargs):
queryset = self.get_queryset()
result = self.paginate_queryset(queryset)
ser = self.get_serializer(instance=result, many=True)
response = self.get_paginated_response(ser.data)
return response
def create(self, request):
if not request.user or not request.auth:
res_code.res_error(msg='需要登录后操作')
return Response(res_code.dict)
json_data = request.data
ser = self.get_serializer(data=json_data)
if not ser.is_valid():
res_code.res_error(msg='校验失败', data=ser.errors)
return Response(res_code.dict)
ser.save(creator=request.user)
res_code.res_success(data=ser.data, msg='新增成功')
return Response(res_code.dict)
def retrieve(self, request, *args, **kwargs):
queryset = self.get_object()
ser = self.get_serializer(instance=queryset)
res_code.res_success(ser.data)
return Response(res_code.dict)
结果
