diff options
| author | Ion Scerbatiuc | 2015-03-19 14:14:48 -0700 | 
|---|---|---|
| committer | Ion Scerbatiuc | 2015-03-19 14:16:45 -0700 | 
| commit | 90280a343746f662ac2e7da4844828a61253c77d (patch) | |
| tree | 6e79745c507c7ad9db37d3d570c72ce2894c4243 /rest_framework/versioning.py | |
| parent | e34e0536b16cf89e6e3858c74c4ae66b01f89609 (diff) | |
| download | django-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.py | 12 | 
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          ) | 
