diff options
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/compat.py | 10 | ||||
| -rw-r--r-- | rest_framework/routers.py | 5 | 
2 files changed, 14 insertions, 1 deletions
| diff --git a/rest_framework/compat.py b/rest_framework/compat.py index 69fdd793..ba26a3cd 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -50,6 +50,16 @@ except ImportError:      from django.http import HttpResponse as HttpResponseBase +# request only provides `resolver_match` from 1.5 onwards. +def get_resolver_match(request): +    try: +        return request.resolver_match +    except AttributeError: +        # Django < 1.5 +        from django.core.urlresolvers import resolve +        return resolve(request.path_info) + +  # django-filter is optional  try:      import django_filters diff --git a/rest_framework/routers.py b/rest_framework/routers.py index 1cb65b1c..61f3ccab 100644 --- a/rest_framework/routers.py +++ b/rest_framework/routers.py @@ -21,7 +21,7 @@ from django.conf.urls import patterns, url  from django.core.exceptions import ImproperlyConfigured  from django.core.urlresolvers import NoReverseMatch  from rest_framework import views -from rest_framework.compat import OrderedDict +from rest_framework.compat import get_resolver_match, OrderedDict  from rest_framework.response import Response  from rest_framework.reverse import reverse  from rest_framework.urlpatterns import format_suffix_patterns @@ -292,7 +292,10 @@ class DefaultRouter(SimpleRouter):              def get(self, request, *args, **kwargs):                  ret = OrderedDict() +                namespace = get_resolver_match(request).namespace                  for key, url_name in api_root_dict.items(): +                    if namespace: +                        url_name = namespace + ':' + url_name                      try:                          ret[key] = reverse(                              url_name, | 
