РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
520 of 818 menu

Исключение TooManyFilesSent

Исключение TooManyFilesSent из модуля django.core.exceptions возникает при обработке запроса, содержащего файлы, когда общее количество переданных файлов превышает значение, установленное в параметре DATA_UPLOAD_MAX_NUMBER_FILES. Это исключение является подклассом SuspiciousOperation и служит для защиты сервера от чрезмерного количества файлов в одном запросе. По умолчанию лимит установлен на значение 100 файлов.

Синтаксис

class TooManyFilesSent(SuspiciousOperation): pass

Пример

Рассмотрим ситуацию, когда клиент отправляет запрос с большим количеством файлов, превышающим лимит:

from django.core.exceptions import TooManyFilesSent from django.http import HttpRequest # Создаём тестовый запрос с множеством файлов request = HttpRequest() request.FILES = { f'file_{i}': None for i in range(150) } try: # Django автоматически проверяет количество файлов # при обработке запроса if len(request.FILES) > 100: raise TooManyFilesSent( 'Too many files sent in request' ) except TooManyFilesSent as e: print(str(e))

Результат выполнения кода:

"Too many files sent in request"

Пример

В реальном приложении это исключение обрабатывается автоматически Django. Можно переопределить лимит в настройках проекта:

# settings.py # Устанавливаем максимальное количество файлов в запросе - 50 DATA_UPLOAD_MAX_NUMBER_FILES = 50 # views.py from django.views.decorators.csrf import csrf_exempt from django.http import JsonResponse from django.core.exceptions import TooManyFilesSent @csrf_exempt def upload_multiple_files(request): try: # Если файлов больше 50, Django выбросит исключение files = request.FILES res = {"status": "ok", "files_count": len(files)} return JsonResponse(res) except TooManyFilesSent: res = {"status": "error", "message": "Too many files"} return JsonResponse(res, status=400)

Пример

Пример обработки исключения в middleware для централизованной обработки ошибок:

from django.core.exceptions import TooManyFilesSent from django.http import HttpResponse class FilesLimitMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): try: response = self.get_response(request) return response except TooManyFilesSent: return HttpResponse( "Too many files uploaded", status=400 )

Результат выполнения кода при превышении лимита:

"Too many files uploaded"

Смотрите также

  • исключение TooManyFieldsSent,
    которое возникает при превышении количества полей в запросе
  • исключение SuspiciousMultipartForm,
    которое возникает при подозрительном multipart запросе
  • исключение RequestDataTooBig,
    которое возникает при превышении размера данных запроса
  • исключение SuspiciousFileOperation,
    которое возникает при подозрительной операции с файлами
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить