DRF——路由控制器
生活随笔
收集整理的這篇文章主要介紹了
DRF——路由控制器
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、自定義路由(原始方式)
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()),]- 注意點(diǎn):注意路由的寫(xiě)法,一定注意加上$結(jié)尾
2. 序列化生成器
class PublishSerializer(serializers.ModelSerializer):class Meta:model = models.Publishfields = "__all__"3. 視圖層
# 所有對(duì)象 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)# 單個(gè)對(duì)象 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(半自動(dòng))
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?
三、自動(dòng)生成路由
1. 路由層
from rest_framework.routers import DefaultRouter, SimpleRouter# 自動(dòng)生成四條路由 router = DefaultRouter() # 自動(dòng)生成兩條路由 # router = SimpleRouter()# 需要傳兩個(gè)參數(shù),第一個(gè)參數(shù)就是匹配的路徑,第二個(gè)參數(shù),是視圖類(lèi)
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總結(jié):
-url控制-基本路由寫(xiě)法:咱們一直寫(xiě)的-第二種寫(xiě)法(必須繼承只要繼承了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'})),-第三種(自動(dòng)生成路由,必須繼承ModelViewSet):-SimpleRouter 自動(dòng)生成兩條路由from rest_framework.routers import SimpleRouter,DefaultRouterrouter=SimpleRouter()router.register('publish',views.PublishView)、、、、url(r'', include(router.urls)),-DefaultRouter自動(dòng)生成四條路由from rest_framework.routers import SimpleRouter,DefaultRouterrouter=DefaultRouter()router.register('publish',views.PublishView)、、、、url(r'', include(router.urls)),轉(zhuǎn)載于:https://www.cnblogs.com/king-home/p/11142824.html
總結(jié)
以上是生活随笔為你收集整理的DRF——路由控制器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 每日成就
- 下一篇: 尝鲜delphi开发android/io