Я использую wtforms для создания формы и проверки. это что-то вроде этого:
class Test(FlaskForm):
image = FileField('تصویر', validators=[
FileAllowed(['jpg', 'png'], 'only image.')
])
year = IntegerField('سال', validators=[DataRequired(), year_check(max=15)])
month = IntegerField('سال', validators=[DataRequired(), NumberRange(1,31)])
day = IntegerField('روز', validators=[DataRequired(), NumberRange(1,31)])
def validate(self):
# import pdb; pdb.set_trace()
if not FlaskForm.validate(self):
return False
if self.year.data and self.month.data and self.day.data:
try:
d = JalaliDate(int(self.year.data), int(self.month.data) , int(self.day.data))
except:
self.day.errors.append('تاریخ اشتباه می باشد')
return False
return True
Функция проверки дает день, месяц и год в Джалали Дата и, если они не валидны, делает ошибку проверки.
И HTML-форма выглядит так:
<form method="POST" action="" enctype="multipart/form-data" role="Post">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
<div class="custom-file">
{{ form.image.label (class_="custom-file-label") }}
{{ form.image(class_="custom-file-input") }}
</div>
в представлении я получаю filefield как это:
file = request.files['image']
и сохраните их в базе данных.
при отправке формы эта ошибка проявляется:
Bad Request
The browser (or proxy) sent a request that this server could not understand.
когда я удаляю функцию FileField или функцию проверки, она работает правильно.