diff --git a/rest_framework/utils/breadcrumbs.py b/rest_framework/utils/breadcrumbs.py index 950e9695b8..8f68d93008 100644 --- a/rest_framework/utils/breadcrumbs.py +++ b/rest_framework/utils/breadcrumbs.py @@ -9,11 +9,8 @@ def get_breadcrumbs(url, request=None): tuple of (name, url). """ from rest_framework.reverse import preserve_builtin_query_params - from rest_framework.settings import api_settings from rest_framework.views import APIView - view_name_func = api_settings.VIEW_NAME_FUNCTION - def breadcrumbs_recursive(url, breadcrumbs_list, prefix, seen): """ Add tuples of (name, url) to the breadcrumbs list, @@ -32,8 +29,7 @@ def breadcrumbs_recursive(url, breadcrumbs_list, prefix, seen): # Don't list the same view twice in a row. # Probably an optional trailing slash. if not seen or seen[-1] != view: - suffix = getattr(view, 'suffix', None) - name = view_name_func(cls, suffix) + name = cls().get_view_name() insert_url = preserve_builtin_query_params(prefix + url, request) breadcrumbs_list.insert(0, (name, insert_url)) seen.append(view) diff --git a/tests/test_utils.py b/tests/test_utils.py index 062f78e11a..781aedb842 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -32,9 +32,15 @@ class NestedResourceInstance(APIView): pass +class CustomNameResourceInstance(APIView): + def get_view_name(self): + return "Foo" + + urlpatterns = [ url(r'^$', Root.as_view()), url(r'^resource/$', ResourceRoot.as_view()), + url(r'^resource/customname$', CustomNameResourceInstance.as_view()), url(r'^resource/(?P[0-9]+)$', ResourceInstance.as_view()), url(r'^resource/(?P[0-9]+)/$', NestedResourceRoot.as_view()), url(r'^resource/(?P[0-9]+)/(?P[A-Za-z]+)$', NestedResourceInstance.as_view()), @@ -75,6 +81,17 @@ def test_resource_instance_breadcrumbs(self): ] ) + def test_resource_instance_customname_breadcrumbs(self): + url = '/resource/customname' + self.assertEqual( + get_breadcrumbs(url), + [ + ('Root', '/'), + ('Resource Root', '/resource/'), + ('Foo', '/resource/customname') + ] + ) + def test_nested_resource_breadcrumbs(self): url = '/resource/123/' self.assertEqual(