基本的に、カスタム Router を作成せずに、より多くのビューを Router にアタッチする良い方法を見つけようとしています。これを達成するための良い方法は何ですか?
これは、私が達成しようとしているものと同等のものです。変数名が変更され、紹介したいメソッドの例は、この質問のために非常に単純化されています。
ルーター:
router = routers.SimpleRouter(trailing_slash=False)
router.register(r'myobjects', MyObjectViewSet, base_name='myobjects')
urlpatterns = router.urls
ビューセット
class MyObjectsViewSet(viewsets.ViewSet):
""" Provides API Methods to manage MyObjects. """
def list(self, request):
""" Returns a list of MyObjects. """
data = get_list_of_myobjects()
return Response(data)
def retrieve(self, request, pk):
""" Returns a single MyObject. """
data = fetch_my_object(pk)
return Response(data)
def destroy(self, request, pk):
""" Deletes a single MyObject. """
fetch_my_object_and_delete(pk)
return Response()
含める必要がある別のメソッド タイプの 1 つの例。(これらの多くがあります):
def get_locations(self, request):
""" Returns a list of location objects somehow related to MyObject """
locations = calculate_something()
return Response(locations)
最終結果は、次の URL が正しく機能し、「きれいに」実装されることです。
GET example.com/myobjects/123/locations