I need to capture the url params in the following url "/portal/{pk}/portalProject/{pk}"
the following url is not leading to the view function below . What is wrong here?
urls.py
router = routers.DefaultRouter()
router.register(r'movies', MoviesViewSet)
router.register(r'project', ClientViewSet)
router.register(r'portal', PortalViewSet)
router.register(r'portal/(?P<portal_pk>\d+)/portalProject/(?P<portalProject_pk>\d+)/$', PortalViewSet, 'portalProject')
router.register(r'portalProject', PortalProjectViewSet)
views.py
class PortalViewSet(viewsets.ModelViewSet):
...
@detail_route(methods=['post','get'])
def portalProject(self, request, pk=None):
print "in here"
if request.method == 'post':
#some code
serializer = PortalProjectSerializer(data=request.data)
if serializer.is_valid():
print "valid"
serializer.save()
return Response(status=status.HTTP_200_OK)
else:
print serializer.errors
return Response(status=status.HTTP_400_BAD_REQUEST)
else:
#some code
return Response(status=status.HTTP_200_OK)
...
portalProjectis a method inside a PortalViewSet class (which derives ViewSet).DefaultRouteraccepts a regular expression as first parameter. I assume that you cannot...?DefaultRouter;)