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

Валидатор validate_image_file_extension

Валидатор validate_image_file_extension применяется к полям форм, принимающим загружаемые файлы, и проверяет, что расширение файла соответствует одному из допустимых форматов изображений. По умолчанию разрешены расширения '.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.webp'. Валидатор используется в основном с полями FileField и ImageField. Он поднимает исключение ValidationError, если расширение файла не входит в список разрешённых.

Синтаксис

from django.core.validators import validate_image_file_extension validate_image_file_extension(value)

Пример

Давайте создадим форму загрузки аватара пользователя с валидацией расширения изображения:

from django import forms from django.core.validators import validate_image_file_extension class AvatarForm(forms.Form): avatar = forms.FileField( validators=[validate_image_file_extension], label="Upload avatar" )

В этом примере поле avatar автоматически проверяет, что загружаемый файл имеет допустимое расширение изображения. Если загрузить файл с расширением '.txt', валидатор выбросит исключение.

Пример

Валидатор также работает с полем ImageField в модели, что позволяет проверять расширение на уровне формы:

from django import forms from .models import UserProfile class ProfileForm(forms.ModelForm): class Meta: model = UserProfile fields = ['avatar'] def clean_avatar(self): avatar = self.cleaned_data.get('avatar') if avatar: validate_image_file_extension(avatar) return avatar

Здесь валидатор вызывается вручную в методе clean_avatar формы. Это позволяет добавить дополнительную логику проверки после стандартных проверок модели.

Пример

Вы также можете использовать валидатор в связке с другими проверками, например, для ограничения размера файла:

from django import forms from django.core.validators import validate_image_file_extension from django.core.validators import FileExtensionValidator class ImageUploadForm(forms.Form): image = forms.FileField( validators=[ validate_image_file_extension, FileExtensionValidator(allowed_extensions=['jpg', 'png']) ], label="Upload image" )

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

"File extension 'txt' is not allowed. Allowed extensions are: 'jpg', 'jpeg', 'png', 'gif', 'bmp', 'tiff', 'webp'."

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

  • класс FileField,
    предназначенный для загрузки файлов в формах
  • класс ImageField,
    предназначенный для загрузки изображений в формах
  • валидатор FileExtensionValidator,
    проверяющий расширение файла
  • метод clean,
    используемый для кастомной валидации полей формы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить