DRF——路由控制器
生活随笔
收集整理的這篇文章主要介紹了
DRF——路由控制器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、自定義路由(原始方式)
1. 路由層
urlpatterns = [url(r'^admin/', admin.site.urls),url(r'^publish/$', views.PublishView.as_view()),url(r'^publish/(?P<pk>\d+)', views.PublishDetailView.as_view()),]- 注意點:注意路由的寫法,一定注意加上$結尾
2. 序列化生成器
class PublishSerializer(serializers.ModelSerializer):class Meta:model = models.Publishfields = "__all__"3. 視圖層
# 所有對象 class PublishView(APIView):def get(self, request):publish_list = models.Publish.objects.all()publish_ser = PublishSerializer(instance=publish_list, many=True)return Response(publish_ser.data)# 單個對象 class PublishDetailView(APIView):def get(self, request, pk):publish_obj = models.Publish.objects.filter(pk=pk).first()publish_ser = PublishSerializer(publish_obj, many=False)return Response(publish_ser.data)二、繼承ModelViewSet(半自動)
1. 路由層:
url(r'^publish/$', views.PublishView.as_view({'get':'list','post':'create'})), url(r'^publish/(?P<pk>\d+)$', views.PublishView.as_view({'get':'retrieve','delete':'destroy','put':'update'})),2. 視圖層:
from rest_framework.viewsets import ModelViewSetclass PublishView(ModelViewSet):queryset = models.Publish.objects.all()serializer_class = PublishSerializer?
三、自動生成路由
1. 路由層
from rest_framework.routers import DefaultRouter, SimpleRouter# 自動生成四條路由 router = DefaultRouter() # 自動生成兩條路由 # router = SimpleRouter()# 需要傳兩個參數,第一個參數就是匹配的路徑,第二個參數,是視圖類
router.register('publish', views.PublishView)
urlpatterns = [
??? url(r'^admin/', admin.site.urls),
??? url(r'', include(router.urls))
]
四條路由
兩條路由:
?
?
2. 視圖層
from rest_framework.viewsets import ModelViewSetclass PublishView(ModelViewSet):queryset = models.Publish.objects.all()serializer_class = PublishSerializer總結:
-url控制-基本路由寫法:咱們一直寫的-第二種寫法(必須繼承只要繼承了ViewSetMixin):# url(r'^publish/$', views.PublishView.as_view({'get':'list','post':'create'})),# url(r'^publish\.(?P<format>\w+)$', views.PublishView.as_view({'get':'list','post':'create'})),# url(r'^publish/(?P<pk>\d+)$', views.PublishView.as_view({'get':'retrieve','delete':'destroy','put':'update'})),-第三種(自動生成路由,必須繼承ModelViewSet):-SimpleRouter 自動生成兩條路由from rest_framework.routers import SimpleRouter,DefaultRouterrouter=SimpleRouter()router.register('publish',views.PublishView)、、、、url(r'', include(router.urls)),-DefaultRouter自動生成四條路由from rest_framework.routers import SimpleRouter,DefaultRouterrouter=DefaultRouter()router.register('publish',views.PublishView)、、、、url(r'', include(router.urls)),轉載于:https://www.cnblogs.com/king-home/p/11142824.html
總結
以上是生活随笔為你收集整理的DRF——路由控制器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每日成就
- 下一篇: 尝鲜delphi开发android/io