我正在尝试将逗号分隔的查询参数传递给 Flask 端点。
一个示例 URI 是:
localhost:3031/someresource#?status=1001,1002,1003
查看request.argsorrequest.args.getlist('status')我看到我只得到一个字符串的返回。
ipdb> pp request.args
ImmutableMultiDict([('status', '1001,1002,1003')])
ipdb> request.args.getlist('status')
['1001,1002,1003']
Run Code Online (Sandbox Code Playgroud)
我知道我可以用逗号分割字符串,但这太hacky了。在 Flask 中处理这个问题的合适方法是什么?还是我的查询参数格式错误?
解决方案
由于 Flask 不直接支持逗号分隔的查询参数,我将它放在我的基本控制器中以支持所有端点上的逗号分隔或重复的查询参数。
request_data = {}
params = request.args.getlist('status') or request.form.getlist('status')
if len(params) == 1 and ',' in params[0]:
request_data['status'] = comma_separated_params_to_list(params[0])})
else:
request_data['status'] = params
Run Code Online (Sandbox Code Playgroud)
def comma_separated_params_to_list(param):
result = []
for val in param.split(','):
if val:
result.append(val)
return result
Run Code Online (Sandbox Code Playgroud) 在第56行,我正在尝试调整数组的大小:
tokenArray = (char**) realloc(tokenArray, tokSize * (sizeof(char)));
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
(11972,0x7fff7ca4f300)malloc:*对象0x100105598的错误:释放对象的校验和不正确 - 对象可能在被释放后被修改.*在malloc_error_break中设置断点以进行调试
这是一个类的编程分配,我已经被特别指示动态分配我的数组,然后根据需要进行扩展.我已经广泛搜索了同样的另一个线程,这个线程对我来说并不太先进,但没有运气......所以希望我能得到一些帮助.谢谢!这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_ROW_SIZE 81
void strInput(char str[], int numElem);
int main(int argc, const char * argv[])
{
printf("Enter a string of any number of integers separated by spaces or tabs.\n");
printf("Maximum string length is 80 characters.\n");
printf("Enter an empty string to conclude input.\n");
int arrSize = 10, tokSize = 10, i = 0, j = 0;
char** inputArray = malloc(arrSize …Run Code Online (Sandbox Code Playgroud)