From 3a529d4af34e1f6d41df633279ba27097e2daf4d Mon Sep 17 00:00:00 2001 From: Tim Watts Date: Tue, 24 Sep 2013 17:55:21 +0000 Subject: [PATCH] Use the namespace from the current url --- rest_framework/reverse.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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