[python] python3 flask解析多选框的值

python3 flask解析多选框的值

结论

  • ImmutableMultiDict 使用getlist 取多个相同key的值
from werkzeug.datastructures import ImmutableMultiDict

d = ImmutableMultiDict([('comment', 'test'), ('wp_ids', '2233'), ('wp_ids', '2341')])
print(d['wp_ids'])
print(d.get('wp_ids'))
print(d.getlist('wp_ids'))

#'2233'
#'2233'
#['2233', '2341']

思路总结

request.form解析多选框值

  1. debug时,发现form的wp_ids值有一个值
  2. 浏览器 network check上传时,传了多个值,只是都传在一个key下
  3. 推测框架测相同key的多个值,都只解析成dict的一个key的值,即最后的那个值
  4. debug check生成request的逻辑,并没有额外的处理逻辑,只是将uwsgi的environ 赋值了
  5. check了request可能的属性,没有发现有哪个数据包含多个值;
  6. 为了确定不因为漏掉某个属性没有check,将整个request对象copy 成文本到本地,查找另外的那个wp_id; 结果居然找到了,而且还是在之前已经check过的属性里面;
  7. 原因是check的属性是ImmutableMultiDict, 它格式化显示的时候,把相同的key合并update了;但是实际上是含有重复key的数据的;ImmutableMultiDict([('comment', 'test'), ('wp_ids', '2233'), ('wp_ids', '2341')])
  8. 接下来就好办了,想办法取值就行了;直接读ImmutableMultiDict源码没有发现方法,Google了一下,有人提到getlist方法,尝试之后成功了,取出了list
  9. 之前有遇到python2/3 取值不兼容的问题,2返回list,3返回单个值; 那现在就可以统一用getlist取出list,统一处理了
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值