36.Django_類視圖_viewsets

之前的方式發現吧有無參數的都是分開兩個方法,現在我們統一一下:
使用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'
    }))

]

此時發現代碼會簡化很多,後面對於路徑這裏也會進行進一步優化:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章