From bdf3aeddde85d8c41fcf94f432b7aeffd6155e6b Mon Sep 17 00:00:00 2001 From: Marlon Date: Mon, 16 Nov 2015 12:24:08 -0600 Subject: [PATCH 1/2] Fix Issue #3596 Check if view has a filter_class. If not, skip trying to get and append a filter html element for it. --- rest_framework/renderers.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index ba4d60881..15352595d 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -592,9 +592,12 @@ class BrowsableAPIRenderer(BaseRenderer): elements = [] for backend in view.filter_backends: if hasattr(backend, 'to_html'): - html = backend().to_html(request, queryset, view) - if html: - elements.append(html) + if not hasattr(view, 'filter_class'): + return + else: + html = backend().to_html(request, queryset, view) + if html: + elements.append(html) if not elements: return From e69f68b28d2419259f93c8e034fd2ffe278823ff Mon Sep 17 00:00:00 2001 From: Marlon Date: Mon, 16 Nov 2015 12:41:11 -0600 Subject: [PATCH 2/2] Check for `filter_class` before for loop for efficiency --- rest_framework/renderers.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index 15352595d..b5f2502fc 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -590,11 +590,11 @@ class BrowsableAPIRenderer(BaseRenderer): queryset = view.get_queryset() elements = [] - for backend in view.filter_backends: - if hasattr(backend, 'to_html'): - if not hasattr(view, 'filter_class'): - return - else: + if not hasattr(view, 'filter_class'): + pass + else: + for backend in view.filter_backends: + if hasattr(backend, 'to_html'): html = backend().to_html(request, queryset, view) if html: elements.append(html)