Im Moment ist dies der relevante Teil meiner Form: >
Code: Select all
from wtforms import IntegerField, FileField, StringField, FieldList
from wtforms.validators import DataRequired, Optional, UUID
class PublishForm(FlaskForm):
# This validates, but the patch_bases list comes up empty.
# patch_bases = FieldList(IntegerField("pb", validators=[Required()]), min_entries=0, max_entries=5, validators=[Optional()])
# This too.
patch_bases = FieldList(IntegerField(), min_entries=0, max_entries=5, validators=[Optional()])
form = PublishForm()
if not form.validate_on_submit():
return form_error_response(form.errors)
< /code>
Und hier ist (Teil von) eine Test -Curl, mit der ich die API drücke: < /p>
curl \
-v \
-X POST \
-H "Authorization: Bearer $(set -eu; cat token)" \
--form 'patch_bases=[2, 4]' \
http://hostname:8080/api/v3/publish
< /code>
Ich verwende -Form, weil ich auch eine Datei hochladen muss (hier nicht angezeigt). < /p>
Ich komme konsequent zurück Eine "erfolgreich validierte" leere Liste, selbst wenn ich eine nicht leere Liste von INTs über Curl übergasse, was ich nicht will. überhaupt angegeben, eine leere Liste für patch_bases = [] oder eine nicht leere Liste für 1 bis 5 int in patch_bases - alle in Form.patch_basen.data. Ich sehe keinen Weg, was ich will. < /P>
Ich verwende: < /p>
WTForms 2.0.2
Python 3.10.12
Flask 1.1.2
< /code>
Ich weiß, die WTForms -Version ist uralt, aber ich bin vorerst dabei, es sei denn, es gibt einen ziemlich überzeugenden Grund zum Upgrade. Es gibt ein feines Handbuch zum Lesen und zögern Sie nicht, mich darauf zu weisen? Ich habe mich in den WTForms 2.3.x DOC auf Feldern (unter anderem Google Hits) herumgegraben, aber nicht gesehen, was ich brauche. < /P>
Danke! < /P>
PS: Ich habe gerade die MultivalueOptional -Klasse von https://github.com/pallets-eco/wtforms/issues/835 - aber field.raw_data ausprobiert, auch wenn nicht auf Ich bestehe einen Wert.