我在 DRF 中有以下 4 个基于类的视图来对名为 Trips 的模型执行 CRUD 操作。
from rest_framework import generics
class TripCreateView(CreateAPIView):
#code that creates a Trip
class TripListView(ListAPIView):
#code that lists Trips
class TripDetailView(RetrieveAPIView):
#code that gives details of a Trip
class TripUpdateView(UpdateAPIView):
#code that updates a particular trip details
class TripDeleteView(DestroyAPIView):
#code that deletes an instance
现在为了将 url 连接到每个视图,我的 urls.py 看起来像这样:
urlpatterns = [
url(r'^trip/$', TripCreateView.as_view()),
url(r'^trip/list/$',TripListView.as_view()),
url(r'^trip/(?P<pk>[0-9]+)/detail/$', TripDetailView.as_view()),
url(r'^trip/(?P<pk>[0-9]+)/update/$', TripUpdateView.as_view()),
url(r'^trip/(?P<pk>[0-9]+)/delete/$', TripDeleteView.as_view())
]
这按预期工作。但是,很明显,这些 API 端点设计得很糟糕,因为 URI 中也有 http 方法。RESTFUL API 端点在 URI 中没有 HTTP 方法,如下所示:
Endpoint HTTP METHOD Result
trips GET Gets all Trips
trips/:id GET Gets details of a Trip
trips POST Creates a Trip
trips/:id PUT Updates a Trip
trips:/id DELETE Deletes a Trip
我知道 Viewsets 可以帮助实现这一点,但由于某些其他限制,我无法使用它们。这可以通过使用我正在使用的基于类的视图来实现吗?