【问题标题】:how to make parse of list(string) not list(char) in parse argument of list?如何在列表的解析参数中解析列表(字符串)而不是列表(字符)?
【发布时间】:2018-02-19 11:14:21
【问题描述】:

我在烧瓶中使用 flask_restful

我的代码如下:

from flask_restful import Resource, reqparse

apilink_parser = reqparse.RequestParser()
apilink_parser.add_argument('provider_id', type=int,required=True)
apilink_parser.add_argument('name', type=str, required=True)
apilink_parser.add_argument('func_id', type=int)
apilink_parser.add_argument('method', type=str)
apilink_parser.add_argument('url', type=str)
apilink_parser.add_argument('parameter',type=list)
apilink_parser.add_argument("expectreturn", type=list)


@marshal_with(apilink_fields)
def post(self):
    args = apilink_parser.parse_args()
    print(args)
    # user owns the task
    task = APILink.create(**args)
    return task, 201

我的 json 发布数据如下:

{ 
"name":"riskiqwhois",
"provider_id":1,
"func_id":1,
"url":"myurl",
"parameter":["query"],  //******//
"expectreturn":[],
"method":"post"
 }

但是当我打印 args 时,结果是:

 {
 'provider_id': 1, 
 'name': 'riskiqwhois', 
 'func_id': 1, 
 'method': 'post', 
 'url': 'myurl', 
 'parameter': ['q', 'u', 'e', 'r', 'y'], //******//
 'expectreturn': None
  }

我想要 你可以看到我想要的参数是字符串列表,它只是一个名为“query”的元素,但真正的参数翻译成数据库是 ['q', 'u', 'e', 'r', 'y'] , 如何使参数是字符串列表而不是字符列表?如何确保数据是列表(字符串)?

【问题讨论】:

    标签: python-3.x list flask flask-restful


    【解决方案1】:

    好吧,你忘了设置action="append",你应该把type=list 改为type=str。 如果没有,您仍然会得到类似 [['q', 'u', 'e', 'r', 'y']] 的结果。

    ...
    apilink_parser.add_argument('parameter',type=str, action='append')
    apilink_parser.add_argument("expectreturn", type=str, action='append')
    

    【讨论】:

      【解决方案2】:

      您可以通过将 action="append" 添加到您的请求解析器来解决此问题 如下所示

      apilink_parser.add_argument('parameter',type=str,action="append")
      apilink_parser.add_argument("expectreturn", type=list,action="append")
      

      这将在输出下方返回您

       {
       'provider_id': 1, 
       'name': 'riskiqwhois', 
       'func_id': 1, 
       'method': 'post', 
       'url': 'myurl', 
       'parameter': ['query'],
       'expectreturn': None
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-21
        • 1970-01-01
        • 2011-09-19
        • 2010-09-24
        • 1970-01-01
        • 2010-12-21
        相关资源
        最近更新 更多