aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework
diff options
context:
space:
mode:
authorTom Christie2014-12-28 12:02:52 +0000
committerTom Christie2014-12-28 12:02:52 +0000
commitefa5942ce1c5d2286fd91994b52fb73a5690426c (patch)
tree1256cb860591572c515cbd4b7363a12dd29fb600 /rest_framework
parent67fc002f91e5dc617dab45895ded32d6be6c2a40 (diff)
downloaddjango-rest-framework-efa5942ce1c5d2286fd91994b52fb73a5690426c.tar.bz2
Support namespaced router URLs with DefaultRouter.
Diffstat (limited to 'rest_framework')
-rw-r--r--rest_framework/compat.py10
-rw-r--r--rest_framework/routers.py5
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,