In Flask convert form POST object into a representation suitable for mongodb

Ivan P picture Ivan P · Nov 23, 2012 · Viewed 51.4k times · Source

I am using Flask and MongoDB. I am trying to convert the content of request.form into something suitable for saving via PyMongo. It seems like something that should come up often enough to have a ready-made solution.

So what Flask give me is something like:

ImmutableMultiDict([('default', u''), ('required': u'on'), ('name', u'short_text'), ('name', u'another'), ('submit', u'Submit')])

And what I am looking to get is something close to this:

{
  'default': '',
  'name': ['short_text', 'another'],
  'required': true
}

Answer

Vb407 picture Vb407 · Feb 25, 2016
>>> from werkzeug.datastructures import ImmutableMultiDict
>>> imd = ImmutableMultiDict([('default', u''), ('required', u'on'), ('name', u'short_text'), ('name', u'another'), ('submit', u'Submit')])
>>> imd.to_dict(flat=False)
>>> {'default': [''], 
'name': ['short_text', 'another'],
'required': ['on'],
'submit': ['Submit']}

.to_dict(flat=False) is the thing to keep in mind. See the relevant documentation