[FileRequiredValidator()在以我的形式使用MultipleFileField()时不起作用

问题描述 投票:1回答:1

我的UploadForm类:

    from app import app
    from flask_wtf.file import FileRequired, FileAllowed
    from wtforms.fields import MultipleFileField
    from wtforms.validators import InputRequired,DataRequired
  class UploadForm(FlaskForm):
     .
     .
     .
     roomImage = MultipleFileField('Room',validators=[FileAllowed(['jpg', 'png'], 'Image only!'), FileRequired('File was empty!')] )
     .
     .
     .#there are other fields here which are  not relevant to  the problem at hand

HTML模板

{% extends "base.html" %}

{% block content %}
 <h1>Upload Your Images</h1>
<form  action="/" enctype="multipart/form-data" method="post"  >
    {{ form.csrf_token }}
    Room<br />
    {{form.roomImage()}}
    .
    .
    . <MORE THINGS THAT I HAVE EDITED OUT>
    {{form.submit()}}
    <br/>
    {% if form.errors %}
      {{ form.errors }}
    {% endif %}
</form>
{% endblock %}

hosts.py运行检查以进行验证

def upload_image():#NEEDS HEAVY FIXING
    """home page to return the web page to upload documents"""
    form = UploadForm()
    if form.validate_on_submit():

使用VS的调试工具,我发现form.validate_on_submit()不起作用,并且始终无法通过验证,并且我在html页面上收到此错误。

{'roomImage':['文件为空!']}

[还有另一个MultipleFileField控件,其代码几乎完全相同。当我使用FileField上载一个文件时,不会发生此问题。关于此的文档非常有限,我只需要继续输入this。我真的不知道如何解决这个问题。我已经广泛搜索以查找涉及MultipleFileField的示例,但它们没有使用任何验证。我在GitHub上找不到一个建议使用OptionalValidator的线程,但这对我来说不是一个选择,即使那也不起作用。有人可以建议我解决方案吗?

编辑:

即使FileAllowed()验证程序似乎也不起作用。

python python-3.x validation flask wtforms
1个回答
0
投票
jQuery.validator.setDefaults({ debug: true, success: "valid" }); $( "#myform" ).validate({ rules: { ":file": { required: true, accept: "image/*" } } });

<form id="myform">
<label for="field">Required, image files only: </label>
<input type="file" class="left" id="field" name="field" multiple>
<br/>
<input type="submit" value="Validate!">
</form>
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/additional-methods.min.js"></script>
© www.soinside.com 2019 - 2024. All rights reserved.