aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/versioning.py
diff options
context:
space:
mode:
authorIon Scerbatiuc2015-03-19 14:14:48 -0700
committerIon Scerbatiuc2015-03-19 14:16:45 -0700
commit90280a343746f662ac2e7da4844828a61253c77d (patch)
tree6e79745c507c7ad9db37d3d570c72ce2894c4243 /rest_framework/versioning.py
parente34e0536b16cf89e6e3858c74c4ae66b01f89609 (diff)
downloaddjango-rest-framework-90280a343746f662ac2e7da4844828a61253c77d.tar.bz2
Handle reversal of non-API view_name in HyperLinkedRelatedField
Diffstat (limited to 'rest_framework/versioning.py')
-rw-r--r--rest_framework/versioning.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/rest_framework/versioning.py b/rest_framework/versioning.py
index 51b886f3..6f7952c0 100644
--- a/rest_framework/versioning.py
+++ b/rest_framework/versioning.py
@@ -1,6 +1,7 @@
# coding: utf-8
from __future__ import unicode_literals
from django.utils.translation import ugettext_lazy as _
+from django.core.urlresolvers import NoReverseMatch
from rest_framework import exceptions
from rest_framework.compat import unicode_http_header
from rest_framework.reverse import _reverse
@@ -122,7 +123,16 @@ class NamespaceVersioning(BaseVersioning):
def reverse(self, viewname, args=None, kwargs=None, request=None, format=None, **extra):
if request.version is not None:
- viewname = self.get_versioned_viewname(viewname, request)
+ versioned_viewname = self.get_versioned_viewname(viewname, request)
+ try:
+ return super(NamespaceVersioning, self).reverse(
+ versioned_viewname, args, kwargs, request, format, **extra
+ )
+ except NoReverseMatch:
+ # If the versioned viewname lookup fails, fallback to the
+ # default reversal, since it may be a non-API view
+ pass
+
return super(NamespaceVersioning, self).reverse(
viewname, args, kwargs, request, format, **extra
)