我有一个用于捕获用户详细信息的表单,在此表单中我有许多单选按钮组,其值为true
和false
。而且我还有多选框,我需要将其转换为列表。
我希望在序列化为JSON并将它们发送到服务器端之前将这些字段转换为布尔值和列表。目前我正在服务器端转换这些值。
当我序列化时,它发送NestedMultiDict,它是一个元组列表的字典。 我需要将单选按钮(当前字符串)的值转换为布尔值,并将多选的值放在列表中。 这就是我目前的情况:
的jQuery / AJAX:
$("button").click(function(e) {
e.preventDefault();
$("input,select,textarea").jqBootstrapValidation();
var url = "{{'candidates.json'|route_url}}";
var data = $("form[name=modify]").serialize();
console.log(data);
//console.log(data);
$.post(url, data).success(function() {
update_messages();
}).error(function() {
console.log(url);
alert("failed");
});
});
Python:
def getBool(**d):
for k,v in d.iteritems():
if v == "True":
d[k] = True
print "true",d[k]
elif v == "False":
d[k] = False
print "false",d[k]
return d
当我需要将多选值放入列表并返回字典时,问题就出现了。我不知道如何转换值,然后将它们放回字典中。
有可能这样做吗?如果是这样,我怎么能做到这一点?
作为一个侧面问题:这种方法最有效的方法是什么?
答案 0 :(得分:0)
我稍微改变了bool
函数,看起来像是:
def bool(boolean):
if boolean == "True":
return True
else:
return False
现在在我的Python函数中,我使用Ajax请求处理序列化数据,我只是这样做:
if self.context.relocate:
self.context.relocate = bool(self.context.relocate)
我发现我不需要将它放回NestedMultiDict
,因为self.context
处理应该插入数据库的数据。所以现在我将数据保存到数据库而不用担心将数据放回Dict ......
我使用名为Pyramid
的框架MongoDB
和MongoEngine
(只是上面的代码更有意义)。
我希望这可以帮助别人。