WTforms-Formular wird nicht gesendet, es werden jedoch keine Überprüfungsfehler ausgegeben

Ich versuche, Datei-Uploads mit zu bekommenflask-uploads arbeiten und in einige Haken laufen. Ich zeig dir meineflask anzeigefunktion, die html und hoffentlich kann jemand darauf hinweisen was mir fehlt.

Grundsätzlich passiert, dass ich das Formular abschicke und es beimif request.method == 'POST' and form.validate(): überprüfen Sie in der Ansichtsfunktion. Es springt nach unten, um die Vorlage anzuzeigen. wtforms wirft mir keine Fehler in das Formular, deshalb frage ich mich, warum die if-Anweisung fehlschlägt.

Was schaue ich?

Flask-uploads einrichten:

# Flask-Uploads
photos = UploadSet('photos',  IMAGES)
configure_uploads(app, (photos))

Aussicht:

def backend_uploadphoto():
    from Application import photos
    from Application.forms.backend import AddPhotoForm

    clients = Client.query.all()
    events = Event.query.order_by('date').all()

    form = AddPhotoForm(request.form, csrf_enabled=True)

    if request.method == 'POST' and form.validate():
        from uuid import uuid4

        uuid = uuid4()
        filename = '{0}.jpg'.format(uuid)

        photo = Photo(uid=uuid, client=request.form['client'], event=request.form['event'])

        photofile = photos.save(request.files.get('photo'), photo.filename)

        return redirect(url_for('backend'))

    return render_template('backend/addphoto.html', form=form, clients=clients, events=events)

Bilden:

class AddPhotoForm(Form):
    photo = FileField('Photo')
    client = IntegerField('Client:')
    event = IntegerField('Event:')

HTML:

<form action="{{url_for('backend_uploadphoto')}}" method="post">
        <p>
            {{form.client.label}}
            <select name="client">
                {% for client in clients %}
                <option value="{{client.id}}">{{client.fullname}}</option>
                {% endfor %}
            </select>
            {{form.client.errors}}
        </p>

        <p>
            {{form.event.label}}
            <select name="event">
                {% for event in events %}
                <option value="{{event.id}}">{{event.name}}</option>
                {% endfor %}
            </select>
            {{form.event.errors}}
        </p>

        <p><label for="photo">Photo:</label>{{form.photo}} <input type="submit" value="Upload"> {{form.photo.errors}}</p>
    </form>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage