1. from django.core.exceptions import PermissionDenied
    
  2. from django.http import HttpResponse
    
  3. from django.template import engines
    
  4. from django.template.response import TemplateResponse
    
  5. 
    
  6. 
    
  7. def normal_view(request):
    
  8.     return HttpResponse("OK")
    
  9. 
    
  10. 
    
  11. def template_response(request):
    
  12.     template = engines["django"].from_string(
    
  13.         "template_response OK{% for m in mw %}\n{{ m }}{% endfor %}"
    
  14.     )
    
  15.     return TemplateResponse(request, template, context={"mw": []})
    
  16. 
    
  17. 
    
  18. def server_error(request):
    
  19.     raise Exception("Error in view")
    
  20. 
    
  21. 
    
  22. def permission_denied(request):
    
  23.     raise PermissionDenied()
    
  24. 
    
  25. 
    
  26. def exception_in_render(request):
    
  27.     class CustomHttpResponse(HttpResponse):
    
  28.         def render(self):
    
  29.             raise Exception("Exception in HttpResponse.render()")
    
  30. 
    
  31.     return CustomHttpResponse("Error")
    
  32. 
    
  33. 
    
  34. async def async_exception_in_render(request):
    
  35.     class CustomHttpResponse(HttpResponse):
    
  36.         async def render(self):
    
  37.             raise Exception("Exception in HttpResponse.render()")
    
  38. 
    
  39.     return CustomHttpResponse("Error")