docs: def server_error(request, template_name='500.html'):
      """
      Custom 500 error handler.
  
      The exception clause is so broad to capture any 500 errors that
      may have been generated from getting the response page e.g. if the
      database was down. If they were not handled they would cause a 500
      themselves and form an infinite loop.
  
      If no ResponsePage exists for with type ``RESPONSE_HTTP500`` then
      the default template render view will be used.
  
      Templates: :template:`500.html`
      Context:
          page
              A ResponsePage with type ``RESPONSE_HTTP500`` if it exists.
      """
      try:
          rendered_page = get_response_page(
              request,
              http.HttpResponseServerError,
              'icekit/response_pages/500.html',
              abstract_models.RESPONSE_HTTP500
          )
          if rendered_page is not None:
              return rendered_page
      except Exception:
          pass
  
      return defaults.server_error(request, template_name)