之前的方式发现吧有无参数的都是分开两个方法,现在我们统一一下:
使用viewsets.ModelViewSet
现在再次修改一下views.py文件的代码看下:
from projects.models import Projects
from projects.serializer import ProjectsModelSerializer
from rest_framework.generics import GenericAPIView
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import mixins, viewsets
## 注意先继承mixins的方法
class ProjectsViewSet(viewsets.ModelViewSet):
queryset = Projects.objects.all()
serializer_class = ProjectsModelSerializer
filter_backends = [DjangoFilterBackend]
ordering_fields = ['name','id']
filterset_fields = ['name','tester']
是不是简化了很多:
此刻如何区分需要在urls.py
文件中进行路径区分:
from django.urls import path
from projects import views
## 指定当前应用的命名空间
app_name = 'projects'
urlpatterns = [
# path('', ProjectsList.as_view()),
# path('<int:pk>', ProjectDetail.as_view())
path('',views.ProjectsViewSet.as_view({
'get':'list',
'post':'create'
}),name = 'projects-list'),
path('<int:pk>',views.ProjectsViewSet.as_view({
'get':'retrieve',
'post':'update',
'delete':'destroy'
}))
]
此时发现代码会简化很多,后面对于路径这里也会进行进一步优化: