django--drf-视图集
ViewSet
位置 from rest_framework.viewsets import ViewSet
继承的是ViewSetMixin和APIView
class BookViewSet(ViewSet):
'''视图集,ViewSetMixin + APIView 重写了as_views'''
def list(self,request):
qs = BookInfo.objects.all()
serializer = BookInfoModelSerializer(qs,many=True)
return Response(serializer.data)
def retrieve(self,request,pk):
try:
book = BookInfo.objects.get(id=pk)
except BookInfo.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
serializer = BookInfoModelSerializer(book)
return Response(serializer.data)
URL路由配置
GenericViewSet
# class BookViewSet(ListModelMixin,RetrieveModelMixin,GenericViewSet):
#ModelViewSet 五个mixin+GenericViewSet
class BookViewSet(ModelViewSet):
'''视图集 重写了as_views+ViewSetMixin+GenericAPIView'''
queryset = BookInfo
serializer_class = BookInfoModelSerializer
url路由设置
router = DefaultRouter()#创建路由器
router.register(r'books',views.BookInfoView)#注册路由
urlpatterns+=router.urls#把生成好的路由拼接到urlpatterns里面 列表+列表
等价于==>
以上只能满足正常标准的增删改查(查多查一),如果要新增另外的查询如下
class BookViewSet(ModelViewSet):#ModelViewSet 五个mixin+GenericViewSet
'''视图集 重写了as_views+ViewSetMixin+GenericAPIView'''
queryset = BookInfo.objects.all()
serializer_class = BookInfoModelSerializer
def latest(self,request):
book= BookInfo.objects.latest('id') #获取最后一本书
serializer = self.get_serializer(book)
return Response(serializer.data)
def read(self,request,pk):
book = self.get_object()
book.bread = request.data.get('bread')
book.save()
serializer = self.serializer_class(book)
return Response(serializer.data)
增加其他路由则在方法上面使用装饰器,路由才能自动识别
装饰器位置
from rest_framework.decorators import action
@action(methods=['get'],detail=True)
methods是指方法,detail指的是列表还是
使用装饰器后router会自动导入,无需修改任何东西
from rest_framework.routers import DefaultRouter,SimpleRouter
DefaultRouter,SimpleRouter唯一区别DefaultRouter会生成根目录
分类:
django
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下