У меня есть приложение фляги, которое получает запрос от редактора DataTables. После получения на сервере, request.form
выглядит как (например)Как декодировать dataTables Редактор формы в колбе питона?
ImmutableMultiDict([('data[59282][gender]', u'M'), ('data[59282][hometown]', u''),
('data[59282][disposition]', u''), ('data[59282][id]', u'59282'),
('data[59282][resultname]', u'Joe Doe'), ('data[59282][confirm]', 'true'),
('data[59282][age]', u'27'), ('data[59282][place]', u'3'), ('action', u'remove'),
('data[59282][runnerid]', u''), ('data[59282][time]', u'29:49'),
('data[59282][club]', u'')])
Я имею в виду, чтобы использовать что-то подобное этому действительно уродливый код, чтобы расшифровать его. Есть ли способ лучше?
from collections import defaultdict
# request.form comes in multidict [('data[id][field]',value), ...]
# so we need to exec this string to turn into python data structure
data = defaultdict(lambda: {}) # default is empty dict
# need to define text for each field to be received in data[id][field]
age = 'age'
club = 'club'
confirm = 'confirm'
disposition = 'disposition'
gender = 'gender'
hometown = 'hometown'
id = 'id'
place = 'place'
resultname = 'resultname'
runnerid = 'runnerid'
time = 'time'
# fill in data[id][field] = value
for formkey in request.form.keys():
exec '{} = {}'.format(d,repr(request.form[formkey]))
Мне любопытно, как это будет работать с моим оригинальным примером, где мой идентификатор 59282? Возможно, чистый диктовский подход лучше для редкого «списка»? –
О, это хороший момент. Обновлен мой ответ с альтернативным предложением 'else'. – Crank