diff --git a/rest_framework/reverse.py b/rest_framework/reverse.py index a51b07f54..ceed09f50 100644 --- a/rest_framework/reverse.py +++ b/rest_framework/reverse.py @@ -4,6 +4,9 @@ Provide reverse functions that return fully qualified URLs from __future__ import unicode_literals from django.core.urlresolvers import reverse as django_reverse from django.utils.functional import lazy +from django.core.urlresolvers import resolve +from django.http import Http404 + def reverse(viewname, args=None, kwargs=None, request=None, format=None, **extra): @@ -14,7 +17,19 @@ def reverse(viewname, args=None, kwargs=None, request=None, format=None, **extra if format is not None: kwargs = kwargs or {} kwargs['format'] = format - url = django_reverse(viewname, args=args, kwargs=kwargs, **extra) + + try: + namespace=resolve(request.path).namespace + except Http404: + namespace=None + + if namespace: + viewname = '{namespace}:{viewname}'.format(namespace=namespace, + viewname=viewname) + + url = django_reverse(viewname, args=args, kwargs=kwargs, + #current_app=resolve(request.path).app_name, + **extra) if request: return request.build_absolute_uri(url) return url