Я написал приложение, которое использует формы для сбора информации, которая затем отправляется по электронной почте. Многие из этих форм имеют файловое поле, используемое для прикрепления файлов к электронной почте. Я хотел бы проверить две вещи: размер файла (чтобы гарантировать, что электронные письма приняты нашим почтовым сервером. Я также хотел бы проверить расширение файла, чтобы препятствовать прикреплению типов файлов, которые не используются для наших пользователей.Расширение поля формы, чтобы добавить новые проверки
(Это класс питона я пытаюсь расширить)
class FileField(Field):
widget = FileInput
default_error_messages = {
'invalid': _(u"No file was submitted. Check the encoding type on the form."),
'missing': _(u"No file was submitted."),
'empty': _(u"The submitted file is empty."),
'max_length': _(u'Ensure this filename has at most %(max)d characters (it has %(length)d).'),
}
def __init__(self, *args, **kwargs):
self.max_length = kwargs.pop('max_length', None)
super(FileField, self).__init__(*args, **kwargs)
def clean(self, data, initial=None):
super(FileField, self).clean(initial or data)
if not self.required and data in EMPTY_VALUES:
return None
elif not data and initial:
return initial
# UploadedFile objects should have name and size attributes.
try:
file_name = data.name
file_size = data.size
except AttributeError:
raise ValidationError(self.error_messages['invalid'])
if self.max_length is not None and len(file_name) > self.max_length:
error_values = {'max': self.max_length, 'length': len(file_name)}
raise ValidationError(self.error_messages['max_length'] % error_values)
if not file_name:
raise ValidationError(self.error_messages['invalid'])
if not file_size:
raise ValidationError(self.error_messages['empty'])
return data
я оказался следующим ваш метод. Спасибо за вашу помощь! – duallain