drf ViewSetMixin与GenericViewSet
关系
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)
结果
本文作者:Sherwin
本文链接:https://www.cnblogs.com/sherwin1995/p/16776515.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步