mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-03 03:50:11 +03:00
Allow DefaultRouter's api-root to be mounted on a url that includes
captured parameters
This commit is contained in:
parent
024baf1765
commit
aa8908fef2
|
@ -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()
|
||||
|
|
|
@ -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<scope>\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):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue
Block a user