我正在尝试使用 KendoUI 网格和 Flask-Restless Web 服务来实现服务器端过滤。
我的数据源对象如下所示:
var myDataSource = new kendo.data.DataSource({
transport: {
read: {
type: 'GET',
url: "http://localhost:5000/api/geo",
contentType: "application/json",
dataType: "json",
},
parameterMap: function(data, type) {
if (type == "read") {
// console.log(data.filter);
return {
page: data.page,
q: data.filter
}
}
},
},
schema: {
data: 'objects',
total: "num_results",
},
serverPaging: true,
serverFiltering: true,
pageSize: 100,
});
在服务器端,我想截取过滤参数,适当修改它们以适应 Flask-Restless 查询对象格式并将它们传递给 REST 端点。但是,如果使用 GET 请求,flask.request.args 对象看起来像一个扁平化的字典,解析起来很繁琐。预处理器中的以下代码:
for key, value in flask.request.args.iteritems():
print '%s : %s' % (key, value)
产生:
q[filters][0][value] : 106
q[filters][1][field] : county_id
q[filters][1][operator] : eq
q[filters][1][value] : 107
q[filters][0][operator] : eq
q[filters][0][field] : county_id
q[logic] : and
我想我有两个问题: 1. 是否可以使用 POST 请求从 Flask-Restless 端点读取数据?2. 如果#1 的答案是肯定的:如何将 data.filter 对象从 Kendo DataSource 传递到 Flask-Restless Web 服务?
我确实可以访问预处理器内的 flask.reguest.args(如果是 GET 请求),但是,args 结构将嵌套对象表示为字符串键,例如:'q[filters][0][value]' 这很难解析。我希望有更好的方法。
谢谢!