Ami*_*eni 8 python json flask jquery-datatables
在启用服务器端处理时,我在处理jquery datatables 1.10发送的参数时遇到一些问题.我在javascript端初始化了数据表,如下所示:
var table = $('#mytable').DataTable( {
"processing": true,
"serverSide": true,
"ajax": {
'url': url,
'type': 'POST'
},
"columns": data
} );
Run Code Online (Sandbox Code Playgroud)
并使用以下方法在基于Flask的服务器中接收POST请求:
@app.route('/data/<data_key>', methods=['POST'])
def get_data(data_key):
print request.form
# do some processing here in order to filter data
# ...
return Response(json.dumps(data), status=200, mimetype='application/json')
Run Code Online (Sandbox Code Playgroud)
为了过滤数据,我试图查看request.form内部,但结果很奇怪,无法轻易转换为对象数组.我得到这样的事情:
ImmutableMultiDict(
[
('columns[0][data]', u'ReportDate'),
('draw', u'1'),
('columns[1][name]', u''),
('columns[1][data]', u'FundName'),
('columns[0][orderable]', u'true'),
('columns[1][searchable]', u'true'),
('columns[1][orderable]', u'true'),
('order[0][column]', u'0'),
('columns[0][name]', u''),
('order[0][dir]', u'asc'),
('search[value]', u''),
('columns[1][search][regex]', u'false'),
('columns[0][search][value]', u''),
('search[regex]', u'false'),
('columns[1][search][value]', u''),
('columns[0][search][regex]', u'false'),
('start', u'0'),
('length', u'10'),
('columns[0][searchable]', u'true')
]
)
Run Code Online (Sandbox Code Playgroud)
在jquery datatables文档中,他们说:
发送到服务器的order [i]和columns [i]参数是信息数组:
order [i] - 是一个数组,定义了有多少列被排序 - 即如果数组长度为1,则执行单列排序,否则正在执行多列排序.
columns [i] - 定义表中所有列的数组.
在这两种情况下,i都是一个整数,它将改变以指示数组值.在大多数现代服务器端脚本环境中,这些数据将自动作为数组提供给您.
但是,Flask将这些数据作为一个简单的字典提供,有没有办法轻松地将它转换为一个对象数组?
k10*_*107 11
获取DataTable以发送json
ajax: {
url: "/api/data_table",
type: "POST",
data: function ( args ) {
return { "args": JSON.stringify( args ) };
}
},
Run Code Online (Sandbox Code Playgroud)
在烧瓶中,解析json
args = json.loads(request.values.get("args"))
columns = args.get("columns")
Run Code Online (Sandbox Code Playgroud)