如何访问 Bottle python 中的 GET 查询字符串多维数组

how to access GET query string multidimensional arrays in bottle python

我知道如何从键中获取单个值,例如:

some_val = request.query.some_key

但是当你有这样的 url 时,你如何访问值。

样本url: http://blahblah.com/what?draw=1&columns%5B0%5D%5Bdata%5D=source_url&columns%5B0%5D%5Bname%5D=&columns%5B0%5D%5Bsearchable%5D=true&columns%5B0%5D%5Borderable%5D=true&columns%5B0%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B0%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B1%5D%5Bdata%5D=total_size&columns%5B1%5D%5Bname%5D=&columns%5B1%5D%5Bsearchable%5D=true&columns%5B1%5D%5Borderable%5D=true&columns%5B1%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B1%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B2%5D%5Bdata%5D=total_time&columns%5B2%5D%5Bname%5D=&columns%5B2%5D%5Bsearchable%5D=true&columns%5B2%5D%5Borderable%5D=true&columns%5B2%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B2%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B3%5D%5Bdata%5D=tag_name&columns%5B3%5D%5Bname%5D=&columns%5B3%5D%5Bsearchable%5D=true&columns%5B3%5D%5Borderable%5D=true&columns%5B3%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B3%5D%5Bsearch%5D%5Bregex%5D=false&order%5B0%5D%5Bcolumn%5D=0&order%5B0%5D%5Bdir%5D=asc&start=0&length=10&search%5Bvalue%5D=&search%5Bregex%5D=false&_=1476782117541

参数解码后的样子:

_   
1476782117541
columns[0][data]    
source_url
columns[0][name]    
columns[0][orderable]   
true
columns[0][search][regex]   
false
columns[0][search][value]   
columns[0][searchable]  
true
columns[1][data]    
total_size
columns[1][name]    
columns[1][orderable]   
true
columns[1][search][regex]   
false
columns[1][search][value]   
columns[1][searchable]  
true
columns[2][data]    
total_time
columns[2][name]    
columns[2][orderable]   
true
columns[2][search][regex]   
false
columns[2][search][value]   
columns[2][searchable]  
true
columns[3][data]    
tag_name
columns[3][name]    
columns[3][orderable]   
true
columns[3][search][regex]   
false
columns[3][search][value]   
columns[3][searchable]  
true
draw    
1
length  
10
order[0][column]    
0
order[0][dir]   
asc
search[regex]   
false
search[value]   
start   
0

我试过了

request.query.getall('order')

request.query.decode()

我正在尝试解析由数据表自动发送的参数,以便我可以相应地修改我的查询。

因为这个问题与使用 https://datatables.net/ 和 bottle python 后端有关。我最终做的是像这样在客户端格式化 args。也许你会发现它有用。

$('#performance-table').DataTable( {
                "ajax": {
                    "url" : "http://someapi.com/dt_set",
                    "type": 'GET',
                    "beforeSend": function (request) {
                        request.setRequestHeader("Authorization", "Bearer " + token);
                    },
                    data: function ( args ) {
                        margs = {}
                        margs.page_nr = args.draw;
                        margs.how_many = args.length;
                        margs.sort_column = args.columns[args.order[0].column].data;
                        margs.sort_direction = args.order[0].dir;
                        //return args;
                        return margs;
                    }
                },
                "processing": true,
                "serverSide": true,
                "columns": [
                    { "data": "source_url" },
                    { "data": "total_size" },
                    { "data": "total_time" },
                    { "data": "tag_name"   }
                ]
             });