日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DRF——路由控制器

發布時間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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——路由控制器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。