docs: def csrf_failure(request, reason=''):
      """
      CSRF-failure view which converts the failed POST request into a GET
      and calls the original view with a sensible error message presented
      to the user.
      :param request: the HttpRequest
      :param reason: non-localised failure description
      """
      if _csrf_failed_view.no_moj_csrf:
          from django.views.csrf import csrf_failure
  
          return csrf_failure(request, reason=reason)
  
      # present a sensible error message to users
      if reason == REASON_NO_CSRF_COOKIE:
          reason = _('Please try again.') + ' ' + \
                   _('Make sure you haven’t disabled cookies.')
      elif reason == REASON_NO_REFERER:
          reason = _('Please try again.') + ' ' + \
                   _('Make sure you are using a modern web browser '
                     'such as Firefox or Google Chrome.')
      else:
          reason = _('Your browser failed a security check.') + ' ' + \
                   _('Please try again.')
      messages.error(request, reason)
  
      # convert into GET request and show view again
      request.method = 'GET'
      request.POST = QueryDict()
  
      # call the original view but set response status to forbidden
      response = _csrf_failed_view.callback(request, *_csrf_failed_view.args, **_csrf_failed_view.kwargs)
      if response.status_code == 200:
          response.status_code = 403
      return response