Fix route iteration in get_urls

This commit is contained in:
Sumanth Ratna 2021-01-01 17:39:54 -05:00
parent 64dcb23852
commit 2096cc97dd
No known key found for this signature in database
GPG Key ID: 310949B7C8B60603

View File

@ -251,21 +251,15 @@ class SimpleRouter(BaseRouter):
lookup = self.get_lookup_regex(viewset)
routes = self.get_routes(viewset)
is_viewset = isclass(viewset) and issubclass(viewset, ViewSetMixin)
for route in routes:
if isinstance(viewset, View):
# `viewset` is a Django CBV. REST Frameworks `ViewSet`s
# are included in this if-statement because `ViewSet`s
# subclass `APIView`, which subclasses `View`.
if is_viewset:
# Only actions which actually exist on the viewset will be bound
mapping = self.get_method_map(viewset, route.mapping)
if not mapping:
continue
view = viewset.as_view(mapping, **initkwargs)
else:
# assume that `viewset` is a Django view
view = viewset
# Build the url pattern
regex = route.url.format(
@ -287,8 +281,12 @@ class SimpleRouter(BaseRouter):
'detail': route.detail,
})
view = viewset.as_view(mapping, **initkwargs)
name = route.name.format(basename=basename)
django_path = re_path(regex, view, name=name)
else:
# assume that `viewset` is a Django view
django_path = path(prefix, viewset, name=prefix)
ret.append(django_path)