Я попытался реализовать пользовательскую ошибку проверки в django

Я написал это validators.py файл:

from django.core.exceptions import ValidationError
import os

def allow_only_images_validator(value):
    ext = os.path.splitext(value.name)[1]
    print(ext)
    valid_extensions = ['.png', '.jpg', '.jpeg']
    if not ext.lower() in valid_extensions:
        raise ValidationError("Unsupported file extension. Allowed extensions: " +str(valid_extensions))

Это мой forms.py файл:

class userProfileForm(forms.ModelForm):
    class Meta:

        profile_picture = forms.FileField(widget=forms.FileInput(attrs={'class': 'btn btn-info'}), validators=[allow_only_images_validator])
        cover_photo = forms.FileField(widget=forms.FileInput(attrs={'class': 'btn btn-info'}), validators=[allow_only_images_validator])

Но эта ошибка не отображается в моем шаблоне. Ссылка здесь: enter image description here

Кто-нибудь может мне помочь, как это исправить?

Проблема в том, что вы определяете поля формы profile_picture и cover_photo внутри класса Meta, что неверно. В Django класс Meta используется для указания метаданных, таких как используемая модель и включаемые поля, а не для определения полей формы. Ваш рабочий код должен выглядеть следующим образом:

class userProfileForm(forms.ModelForm):
        profile_picture = forms.FileField(widget=forms.FileInput(attrs={'class': 'btn btn-info'}), validators=[allow_only_images_validator])
        cover_photo = forms.FileField(widget=forms.FileInput(attrs={'class': 'btn btn-info'}), validators=[allow_only_images_validator])
        class Meta:
            model = UserProfile   # name of your model
            fields = ['profile_picture', 'cover_photo',]  # Add other fields as needed
Вернуться на верх