diff --git a/rest_framework/routers.py b/rest_framework/routers.py index 97b35c10a..2876dfa2a 100644 --- a/rest_framework/routers.py +++ b/rest_framework/routers.py @@ -254,10 +254,10 @@ class DefaultRouter(SimpleRouter): class APIRoot(views.APIView): _ignore_model_permissions = True - def get(self, request, format=None): + def get(self, request, format=None, *args, **kwargs): ret = {} for key, url_name in api_root_dict.items(): - ret[key] = reverse(url_name, request=request, format=format) + ret[key] = reverse(url_name, request=request, format=format, kwargs=kwargs) return Response(ret) return APIRoot.as_view() diff --git a/rest_framework/tests/test_routers.py b/rest_framework/tests/test_routers.py index e723f7d45..5eda19188 100644 --- a/rest_framework/tests/test_routers.py +++ b/rest_framework/tests/test_routers.py @@ -2,7 +2,7 @@ from __future__ import unicode_literals from django.db import models from django.test import TestCase from django.core.exceptions import ImproperlyConfigured -from rest_framework import serializers, viewsets, permissions +from rest_framework import serializers, viewsets, permissions, status from rest_framework.compat import include, patterns, url from rest_framework.decorators import link, action from rest_framework.response import Response @@ -164,6 +164,26 @@ class TestNameableRoot(TestCase): expected = 'nameable-root' self.assertEqual(expected, self.urls[0].name) +class TestScopedRoot(TestCase): + class NoteViewSet(viewsets.ModelViewSet): + model = RouterTestModel + + router = DefaultRouter() + router.register(r'notes', NoteViewSet) + + urls = patterns( + '', + url(r'^(?P\w[\w-]*)/', include(router.urls)), + ) + + def setUp(self): + self.view = self.router.get_api_root_view() + + def test_api_root_is_accessible(self): + request = factory.get('/scope/') # get the api-root + response = self.view(request, scope='scope') + self.assertEqual(response.status_code, status.HTTP_200_OK) + class TestActionKeywordArgs(TestCase): """