from rest_framework.routers import SimpleRouter
python
router = SimpleRouter()
router = SimpleRouter() # 註冊各類接口路由 router.register('cars', views.CarModelViewSet, base_name='car') #car爲連接的開頭,views.CarModelViewSet爲當路由爲cars的時候的調用的函數 urlpatterns = [] urlpatterns.extend(router.urls)
其效果等同於django
urlpatterns = [ url(r'^cars/$', views.CarModelViewSet.as_view()), url(r'^cars/(?P<pk>.*)/$', views.CarModelViewSet.as_view()), ]
from rest_framework.viewsets import ModelViewSet
ModelViewSet源碼
框架
class ModelViewSet(mixins.CreateModelMixin, mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, mixins.ListModelMixin, GenericViewSet): #全部他當中以及對於get等等的方法自動進行了封裝 mixins是在generics再進行方法的分裝成5個方法 RetrieveModelMixin:retrieve 單取 ListModelMixin:list 羣取 CreateModelMixin:create 單增 UpdateModelMixin:update 單總體改 UpdateModelMixin: partial_update 單局部改 DestroyModelMixin:destroy 單刪
class CarModelViewSet(ModelViewSet): queryset = models.Car.objects.filter(is_delete=False) serializer_class = serializers.CarModelSerializer ........ #queryset serializer_class 必須給與 ... def get(self): 他會調用retrieve或者list方法其餘也相似 .....