1. 程式人生 > >檢視和路由

檢視和路由

檢視

  第一種方法:

-from rest_framework.mixins import ListModelMixin, CreateModelMixin
            # class PublishView(GenericAPIView, ListModelMixin, CreateModelMixin):
            #     queryset = Publish.objects.all()
            #     serializer_class = PublishSerializers
            #
            #
def get(self, request): # return self.list(request) # # def post(self, request): # # 新增一條資料 # return self.create(request)

  第二種方法:

ListCreateAPIView 繼承了GenericAPIView, ListModelMixin, CreateModelMixin
            
# class PublishView(GenericAPIView, ListModelMixin, CreateModelMixin): # class PublishView(ListCreateAPIView): # queryset = Publish.objects.all() # serializer_class = PublishSerializers

  第三種方法:

路由:url(r'^publish/$', views.PublishView.as_view({'get': '
list', 'post': 'create'})), url(r'^publish/(?P<pk>\d+)', views.PublishView.as_view({'get': 'retrieve', 'put': 'update','delete':'destroy'})), from rest_framework.viewsets import ModelViewSet class PublishView(ModelViewSet): queryset = Publish.objects.all() serializer_class = PublishSerializers

  第四種方法:ViewSetMixin 它有什麼作用?用了它之後,檢視類中不需要寫get,post,put方法了,自己定義方法就可以了 讓請求方法對應到自己定義的方法上,配置路由

路由控制    
  三種:
    -一種基本路由:url(r'^publish/$', views.PublishView.as_view()),
    -半自動路徑:views.PublishView.as_view({'get': 'list', 'post': 'create'}))
   -必須繼承:ViewSetMixin
      -繼承ViewSetMixin的先後順序
    -全自動路由:(基本不用)
      -from rest_framework import routers
      # 生成一個router物件
      router=routers.DefaultRouter()
      # 需要傳兩個引數,第一個引數就是匹配的路徑,第二個引數,是檢視類
      router.register('publish',views.PublishView)
   url('', include(router.urls)),
      #自動生成四個路由(PublishView必須繼承ModelViewSet)
響應器:(基本上不需要你配置)
  區域性配置
  檢視類中:
    -renderer_classes=[JSONRenderer,BrowsableAPIRenderer]
  全域性配置
  在setting中:
    REST_FRAMEWORK = {
      'DEFAULT_RENDERER_CLASSES':['rest_framework.renderers.JSONRenderer']
    }