Campos de formulario dynamics en flask.request.form

He revisado la documentación, pero por mi vida, no puedo entender cómo se rellena el objeto request.form en Flask. La documentación dice que está llena de datos de formularios analizados de solicitudes POST o PUT, pero mi formulario es dynamic, por lo que no necesariamente sé qué campos existen cuando se envía la solicitud POST, aunque quiero asegurarme de agregar la información de estos. Campos a la base de datos.

Algunos de los campos en el formulario siempre están ahí, pero también habrá una cantidad de campos adicionales de una lista de aproximadamente 60. ¿Cómo debo averiguar qué campos adicionales se encuentran en la solicitud y cómo debo obtener la información? datos de ellos?

EDITAR: Mi problema específico ha sido resuelto, pero todavía vale la pena preguntar cómo se rellena el diccionario request.form. Descubrí de manera difícil que si una entrada de checkbox no está marcada, no hay una clave agregada al diccionario bajo su nombre, y tratar de obtener el valor de una clave que no existe en el diccionario resulta en un HTTP 400 BAD REQUEST bastante confuso y críptico HTTP 400 BAD REQUEST error.

request.form devuelve un objeto MultiDict . Básicamente, significa que para 1 clave, podría tener varios valores. Si desea probar cómo se ve su formulario POST, simplemente haga una statement de impresión rápida de la siguiente manera

 f = request.form for key in f.keys(): for value in f.getlist(key): print key,":",value 

Si lees la documentación de MultiDict, dice

“Un MultiDict es una subclase de diccionario personalizada para tratar con múltiples valores para la misma clave que, por ejemplo, utilizan las funciones de análisis en los envoltorios. Esto es necesario porque algunos elementos de formulario HTML pasan varios valores por la misma clave.

http://werkzeug.pocoo.org/docs/datastructures/#werkzeug.datastructures.MultiDict