我正在使用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
验证功能会在jalali date中给出日期,月份和年份,如果不是,则会产生验证错误。
和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>
在视图中,我得到这样的文件字段:
file = request.files['image']
并将其保存在数据库中。 提交表单时显示此错误:
Bad Request
The browser (or proxy) sent a request that this server could not understand.
当我删除FileField或验证功能上的内容时,它将正常工作。
答案 0 :(得分:0)
问题是这部分代码:
file = request.files['image']
选择任何文件上传时发生错误。然后我更改了代码:
if 'image' in request.files:
file = request.files['image']
我从here对其进行了罚款