Я попытался реализовать пользовательскую ошибку проверки в 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])
Но эта ошибка не отображается в моем шаблоне. Ссылка здесь:

Кто-нибудь может мне помочь, как это исправить?
Проблема в том, что вы определяете поля формы 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