from django.core.exceptions import PermissionDenied from django.http import HttpResponse from django.template import engines from django.template.response import TemplateResponse def normal_view(request): return HttpResponse("OK") def template_response(request): template = engines["django"].from_string( "template_response OK{% for m in mw %}\n{{ m }}{% endfor %}" ) return TemplateResponse(request, template, context={"mw": []}) def server_error(request): raise Exception("Error in view") def permission_denied(request): raise PermissionDenied() def exception_in_render(request): class CustomHttpResponse(HttpResponse): def render(self): raise Exception("Exception in HttpResponse.render()") return CustomHttpResponse("Error") async def async_exception_in_render(request): class CustomHttpResponse(HttpResponse): async def render(self): raise Exception("Exception in HttpResponse.render()") return CustomHttpResponse("Error")