Skip to content

Commit

Permalink
Merge pull request #742 from terencehonles/handle-errors-rendering-wi…
Browse files Browse the repository at this point in the history
…th-TemplateHTMLRenderer

handle errors rendering with TemplateHTMLRenderer
  • Loading branch information
JoelLefkowitz committed Jul 18, 2022
2 parents f4bf7ba + 60ae05c commit f87dbd5
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions src/drf_yasg/renderers.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from django.core.exceptions import ImproperlyConfigured
from django.shortcuts import resolve_url
from django.template.loader import render_to_string
from django.utils.encoding import force_str
Expand Down Expand Up @@ -64,10 +65,15 @@ class _UIRenderer(BaseRenderer):

def render(self, swagger, accepted_media_type=None, renderer_context=None):
if not isinstance(swagger, Swagger): # pragma: no cover
# if `swagger` is not a ``Swagger`` object, it means we somehow got a non-success ``Response``
# in that case, it's probably better to let the default ``TemplateHTMLRenderer`` render it
# see https://github.com/axnsan12/drf-yasg/issues/58
return TemplateHTMLRenderer().render(swagger, accepted_media_type, renderer_context)
try:
# if `swagger` is not a ``Swagger`` object, it means we somehow got a non-success ``Response``
# in that case, it's probably better to let the default ``TemplateHTMLRenderer`` render it
# see https://github.com/axnsan12/drf-yasg/issues/58
return TemplateHTMLRenderer().render(swagger, accepted_media_type, renderer_context)
except ImproperlyConfigured:
# Fall back to using eg '404 Not Found'
response = renderer_context['response']
return '%d %s' % (response.status_code, response.status_text.title())

self.set_context(renderer_context, swagger)
return render_to_string(self.template, renderer_context, renderer_context['request'])
Expand Down

0 comments on commit f87dbd5

Please sign in to comment.