Tomer Avraham
Tomer Avraham

Reputation: 74

Django Modelviewset try to create custom route

@action(detail=False, methods=['GET'], name='Get Vesting Locaitons')
def get_vesting_locations(self, request, pk=None, *args, **kwargs):

I'm trying to return json response and get 404 error

this is the the route regiser

router.register(r'vesting', VestingViewSet, basename='vesting')

and those are the urls im trying to get

http://localhost:8000/vesting/get_vesting_locations/617b8bd8-6fdd-43eb-948a-4b17d1a0a089/
http://localhost:8000/vesting/617b8bd8-6fdd-43eb-948a-4b17d1a0a089/get_vesting_locations/

Upvotes: 1

Views: 100

Answers (1)

Brian Destura
Brian Destura

Reputation: 12068

Defining the action with detail=False will tell the url that this view does not work on a single object. So it will build this url:

vesting/get_vesting_locations/

So trying to go to:

vesting/617b8bd8-6fdd-43eb-948a-4b17d1a0a089/get_vesting_locations/

will then give you a 404.

In order for this action to work with a single object and support the above url, set detail=True:

@action(detail=True, methods=['GET'], name='Get Vesting Locaitons')
def get_vesting_locations(self, request, pk=None, *args, **kwargs):

Upvotes: 1

Related Questions