diff --git a/docs/changelog.rst b/docs/changelog.rst index 3eb51b4..4e3433e 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -3,11 +3,13 @@ Changelog ######### ********* -**1.5.0** +**1.4.1** ********* - **FIXED:** the ``coerce_to_string`` is now respected when setting the type, default value and min/max values of ``DecimalField`` in the OpenAPI schema (:issue:`62`) +- **FIXED:** error responses from web UI views are now rendered with ``TemplateHTMLRenderer`` instead of throwing + confusing errors (:issue:`58`) - **IMPROVED:** updated ``swagger-ui`` to version 3.10.0 - **IMPROVED:** updated ``ReDoc`` to version 1.21.0 diff --git a/src/drf_yasg/renderers.py b/src/drf_yasg/renderers.py index def9ca4..13b7b0b 100644 --- a/src/drf_yasg/renderers.py +++ b/src/drf_yasg/renderers.py @@ -1,7 +1,9 @@ from django.shortcuts import render, resolve_url -from rest_framework.renderers import BaseRenderer +from rest_framework.renderers import BaseRenderer, TemplateHTMLRenderer from rest_framework.utils import json +from drf_yasg.openapi import Swagger + from .app_settings import redoc_settings, swagger_settings from .codecs import VALIDATORS, OpenAPICodecJson, OpenAPICodecYaml @@ -51,6 +53,11 @@ class _UIRenderer(BaseRenderer): template = '' def render(self, swagger, accepted_media_type=None, renderer_context=None): + if not isinstance(swagger, Swagger): + # 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) self.set_context(renderer_context, swagger) return render( renderer_context['request'],