diff --git a/rest_framework/utils/breadcrumbs.py b/rest_framework/utils/breadcrumbs.py index 950e9695b..5d8a18cf2 100644 --- a/rest_framework/utils/breadcrumbs.py +++ b/rest_framework/utils/breadcrumbs.py @@ -32,8 +32,7 @@ def get_breadcrumbs(url, request=None): # 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 062f78e11..5e2823b96 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -31,10 +31,15 @@ class NestedResourceRoot(APIView): 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 +80,17 @@ class BreadcrumbTests(TestCase): ] ) + 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(