之前的方式發現吧有無參數的都是分開兩個方法,現在我們統一一下:
使用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'
}))
]
此時發現代碼會簡化很多,後面對於路徑這裏也會進行進一步優化: