From a372a8edea70260ebfb559f3d0bd692132cdfb40 Mon Sep 17 00:00:00 2001 From: Christian Sauer Date: Thu, 15 Sep 2016 12:54:35 -0400 Subject: [PATCH] Check for empty router prefix; adjust URL accordingly It's easiest to fix this issue after we have made the regex. To try to fix it before would require doing something different for List vs Detail, which means we'd have to know which type of url we're constructing before acting accordingly. --- rest_framework/routers.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rest_framework/routers.py b/rest_framework/routers.py index 4eec70bda..e2fbfa77b 100644 --- a/rest_framework/routers.py +++ b/rest_framework/routers.py @@ -83,6 +83,7 @@ class BaseRouter(object): class SimpleRouter(BaseRouter): + routes = [ # List route. Route( @@ -258,6 +259,13 @@ class SimpleRouter(BaseRouter): trailing_slash=self.trailing_slash ) + # If there is no prefix, the first part of the url is probably + # controlled by project's urls.py and the router is in an app, + # so a slash in the beginning will (A) cause Django to give + # warnings and (B) generate URLS that will require using '//'. + if not prefix and regex[:2] == '^/': + regex = '^' + regex[2:] + view = viewset.as_view(mapping, **route.initkwargs) name = route.name.format(basename=basename) ret.append(url(regex, view, name=name))