如果我发送这样的表格:
<form method="POST" ...>
<input type="text" name="filters[price_from]">
<input type="text" name="filters[price_to]">
</form>
到PHP脚本它会自动创建一个数组,我可以像这样访问变量:
$_POST['filters']['price_to']
和
$_POST['filters']
是可迭代的
这是我的问题,如何在FLASK中获得相同的效果?
request.form.getlist('filters')
return [](空列表)
request.form.get('filters[price_from]')
返回正确的值,但这不是他们期望的结果(不可迭代)。
我应该重建表格还是使用其他方法?
答案 0 :(得分:1)
您无法使用密钥访问python数组/列表,如果您想使用密钥访问数据,将filters
存储为json
对象,那么您将能够访问数据使用密钥。
<form method="POST" enctype="application/JSON">
<input type="text" name="filters[price_from]" value="" >
<input type="text" name="filters[price_to]" value="" >
</form>
filters = request.get_json()
filters['price_from'] #returns price_from value
filters['price_to'] #returns price_to value
在php中,数组有几件事。
PHP中的数组实际上是一个有序的映射。映射是将值与键关联的类型。此类型针对多种不同用途进行了优化;它可以被视为数组,列表(向量),哈希表(地图的实现),字典,集合,堆栈,队列,甚至更多。
在python中,数组仅 a list由索引访问。
>>> filters = ['price_from', 'price_to']
>>> filters[0]
'price_from'
>>> filters[1]
'price_to'
按键访问dict。
>>> filters = {'price_from':'value', 'price_to':'another_value'}
>>> filters['price_from']
'value'
>>> filters['price_to']
'another_value'