mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-05 04:50:12 +03:00
Merge 1854f26b5d
into 1e9e1a5bfe
This commit is contained in:
commit
19247fcaed
|
@ -5,6 +5,9 @@ from __future__ import unicode_literals
|
||||||
|
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
from django.utils.functional import lazy
|
from django.utils.functional import lazy
|
||||||
|
from django.core.urlresolvers import resolve
|
||||||
|
from django.http import Http404
|
||||||
|
|
||||||
|
|
||||||
from rest_framework.compat import reverse as django_reverse
|
from rest_framework.compat import reverse as django_reverse
|
||||||
from rest_framework.compat import NoReverseMatch
|
from rest_framework.compat import NoReverseMatch
|
||||||
|
@ -60,9 +63,25 @@ def _reverse(viewname, args=None, kwargs=None, request=None, format=None, **extr
|
||||||
if format is not None:
|
if format is not None:
|
||||||
kwargs = kwargs or {}
|
kwargs = kwargs or {}
|
||||||
kwargs['format'] = format
|
kwargs['format'] = format
|
||||||
url = django_reverse(viewname, args=args, kwargs=kwargs, **extra)
|
|
||||||
|
if request:
|
||||||
|
if hasattr(request, 'resolver_match'):
|
||||||
|
namespace = request.resolver_match.namespace
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
namespace = resolve(request.path).namespace
|
||||||
|
except Http404:
|
||||||
|
namespace=None
|
||||||
|
|
||||||
|
if namespace and ':' not in viewname:
|
||||||
|
viewname = '{namespace}:{viewname}'.format(namespace=namespace,
|
||||||
|
viewname=viewname)
|
||||||
|
|
||||||
|
url = django_reverse(viewname, args=args, kwargs=kwargs,
|
||||||
|
**extra)
|
||||||
if request:
|
if request:
|
||||||
return request.build_absolute_uri(url)
|
return request.build_absolute_uri(url)
|
||||||
|
|
||||||
return url
|
return url
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user