Flask: ошибка при добавлении в модель зарузки картинок

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

def picture_validation(form, field):
    if field.data:
    filename = field.data.filename
    if filename[-4:] != '.jpg':
        raise ValidationError('file must be .jpg')
    if imghdr.what(field.data) != 'jpeg':
        raise ValidationError('file must be a valid jpeg image.')
  field.data = field.data.stream.read()
  return True

form_columns = ['id','url_pic', 'pic']
column_labels = dict(id='ID', url_pic="Picture's URL", pic='Picture')

def pic_formatter(view, context, model, name):
    return 'NULL' if len(getattr(model, name)) == 0 else 'a picture'

column_formatters =  dict(pic=pic_formatter)
form_overrides = dict(pic= FileUploadField)
form_args = dict(pic=dict(validators=[picture_validation]))

Выдает такую ошибку:

File "/home/cyberz/projects/new_personal_site/nikitaklimov/app/app.py", line 96 filename = field.data.filename ^ IndentationError: expected an indented block

В чем проблема? Спасибо.


Ответы (1 шт):

Автор решения: CrazyElf

Flask тут не при чём.

if field.data:
filename = field.data.filename

В следующей строке после if должен быть отступ:

if field.data:
    filename = field.data.filename

Если в ошибке есть слово indent, indented, indentation или ещё что-то однокоренное, то значит проблема в отступах - их или много, или мало, что-то не сходится.

В Питоне отступы обозначают блоки кода, они не могут быть произвольными.

→ Ссылка