从 POSTed 数组访问非顺序列表项
Accessing non-sequential list items from a POSTed array
我有一个 Python WebApp 接受 POSTed AJAX 数组。我可以很好地访问数组:
print self.request.POST.items()
#(new lines in response for readability)
[(u'verb', u'create'),
(u'my_id', u'18'),
(u'properties[1]', u'1000'),
(u'properties[3]', u'2000')]
重要的是,所提供的属性 a) 数量未知,b) 并不总是连续的。
目前我用这个收集它们:
i = 0
while i <= 50:
current_key = 'properties['+str(i)+']'
if self.request.get(current_key) != "":
self.response.out.write(self.request.get(current_key))
i = i + 1
但是我在做的时候对自己感到恶心(而且大多数时候只有不到 50 个属性,并且有一天可能会更多...我不确定是否会更草率, 少 Pythonic 解决方案).
关于我在这里遗漏的任何提示?如果我尝试直接访问 'properties' (计划是迭代它或其他东西)它是未设置的,这让我觉得我只是在查看一组名为 'properties[1]' 和 [=27 的断开连接的字符串=] 实际上根本不是数组/列表/字典。
如果这是一个更简洁的修复,我确实可以访问另一端的 js - 目前它是这样的:
var properties = {1:1000, 2:2000, 4:3000};
$.post( "/api", { verb: 'create', my_id: my_id, properties: properties })
发送数据为JSON。然后你可以直接反序列化为字典,不需要任何处理。
$.post( "/api", { verb: 'create', my_id: my_id, properties: JSON.stringify(properties) })
...
properties = json.loads(self.request.get('properties', {}))
我有一个 Python WebApp 接受 POSTed AJAX 数组。我可以很好地访问数组:
print self.request.POST.items()
#(new lines in response for readability)
[(u'verb', u'create'),
(u'my_id', u'18'),
(u'properties[1]', u'1000'),
(u'properties[3]', u'2000')]
重要的是,所提供的属性 a) 数量未知,b) 并不总是连续的。
目前我用这个收集它们:
i = 0
while i <= 50:
current_key = 'properties['+str(i)+']'
if self.request.get(current_key) != "":
self.response.out.write(self.request.get(current_key))
i = i + 1
但是我在做的时候对自己感到恶心(而且大多数时候只有不到 50 个属性,并且有一天可能会更多...我不确定是否会更草率, 少 Pythonic 解决方案).
关于我在这里遗漏的任何提示?如果我尝试直接访问 'properties' (计划是迭代它或其他东西)它是未设置的,这让我觉得我只是在查看一组名为 'properties[1]' 和 [=27 的断开连接的字符串=] 实际上根本不是数组/列表/字典。
如果这是一个更简洁的修复,我确实可以访问另一端的 js - 目前它是这样的:
var properties = {1:1000, 2:2000, 4:3000};
$.post( "/api", { verb: 'create', my_id: my_id, properties: properties })
发送数据为JSON。然后你可以直接反序列化为字典,不需要任何处理。
$.post( "/api", { verb: 'create', my_id: my_id, properties: JSON.stringify(properties) })
...
properties = json.loads(self.request.get('properties', {}))