From 90280a343746f662ac2e7da4844828a61253c77d Mon Sep 17 00:00:00 2001 From: Ion Scerbatiuc Date: Thu, 19 Mar 2015 14:14:48 -0700 Subject: Handle reversal of non-API view_name in HyperLinkedRelatedField --- rest_framework/versioning.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'rest_framework/versioning.py') 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 ) -- cgit v1.2.3