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>