在 ImmutableMultiDict 中访问动态输入名称
Access dynamic input name in ImmutableMultiDict
我从 wtforms 那里得到了这个:
ImmutableMultiDict([('csrf_token', u'1422930083.22##139a472d31a0bbb37c25fee616b8b5bd5a38e37a'), ('27', u'y'), ('type', u'job')])
我能做到
print request.form.getlist('type')
获取类型值。但是 27
呢?名称可以更改,因此在另一种形式中可以是 25
.
我如何访问该输入字段? ImmutableMultiDict 可以转换吗?我无法弹出 ImmutableMultiDict
中的任何元素
TypeError: 'ImmutableMultiDict' objects are immutable
也许这会有所帮助。通常我不使用 ImmutableMultiDict 所以也许有更好的方法。但是假设 dict 总是有 3 个元素,其中两个是 'csrf_token' 和 'type',第三个未知键的名称你可以得到如下:
from werkzeug.datastructures import ImmutableMultiDict
imd = ImmutableMultiDict([('csrf_token', u'1422930083.22##139a472d31a0bbb37c25fee616b8b5bd5a38e37a'),
('27', u'y'),
('type', u'job')])
for k in imd:
if k not in ['csrf_token','type']:
last_key = k
print(last_key)
break
print(imd[last_key])
结果是:
27
y
请注意需要循环,因为字典是无序的,因此您永远不知道字典中键的存储顺序。
这种方式适合我:
data_form = {}
for fieldname, value in request.form.items():
data_form[fieldname] = value
data_form.pop("csrf_token", None)
data_form.pop("type", None)
print data_form
我从 wtforms 那里得到了这个:
ImmutableMultiDict([('csrf_token', u'1422930083.22##139a472d31a0bbb37c25fee616b8b5bd5a38e37a'), ('27', u'y'), ('type', u'job')])
我能做到
print request.form.getlist('type')
获取类型值。但是 27
呢?名称可以更改,因此在另一种形式中可以是 25
.
我如何访问该输入字段? ImmutableMultiDict 可以转换吗?我无法弹出 ImmutableMultiDict
TypeError: 'ImmutableMultiDict' objects are immutable
也许这会有所帮助。通常我不使用 ImmutableMultiDict 所以也许有更好的方法。但是假设 dict 总是有 3 个元素,其中两个是 'csrf_token' 和 'type',第三个未知键的名称你可以得到如下:
from werkzeug.datastructures import ImmutableMultiDict
imd = ImmutableMultiDict([('csrf_token', u'1422930083.22##139a472d31a0bbb37c25fee616b8b5bd5a38e37a'),
('27', u'y'),
('type', u'job')])
for k in imd:
if k not in ['csrf_token','type']:
last_key = k
print(last_key)
break
print(imd[last_key])
结果是:
27
y
请注意需要循环,因为字典是无序的,因此您永远不知道字典中键的存储顺序。
这种方式适合我:
data_form = {}
for fieldname, value in request.form.items():
data_form[fieldname] = value
data_form.pop("csrf_token", None)
data_form.pop("type", None)
print data_form