Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用烧瓶_restful';s reqparse,您是否能够忽略未包含在params或json中的值?_Python_Flask_Flask Restful - Fatal编程技术网

Python 使用烧瓶_restful';s reqparse,您是否能够忽略未包含在params或json中的值?

Python 使用烧瓶_restful';s reqparse,您是否能够忽略未包含在params或json中的值?,python,flask,flask-restful,Python,Flask,Flask Restful,假设您有一个API请求,您正在使用flask\u restful.reqparse处理请求的参数和主体 POST {{url}}/users Content-Type: application/json { "firstName": "First", "lastName": "Last", "age": 25 } 调用.parse_args()时,是否可以不包含请求中未找到的值?例如,在上面的解析器中,我们有valueInQuestion,但请求主体不包含此字段 我从

假设您有一个API请求,您正在使用
flask\u restful.reqparse
处理请求的参数和主体

POST {{url}}/users
Content-Type: application/json

{
    "firstName": "First",
    "lastName": "Last",
    "age": 25
}
调用
.parse_args()
时,是否可以不包含请求中未找到的值?例如,在上面的解析器中,我们有
valueInQuestion
,但请求主体不包含此字段

我从解析器得到的信息是:
{'firstName':'First','lastName':'Last','age':25,'valueInQuestion':None}

我想从解析器中得到的是:
{'firstName':'First','lastName':'Last','age':25}
,因为
valueInQuestion
不包括在内


编辑:我知道我可以从dict中过滤
None
值。我不想这样做,因为如果用户使用
{…valueInQuestion:null}
点击POST请求,我希望保留该值,而不是过滤掉它。

您也可以从dict中过滤掉值为None的项,以防万一这是您的选项


res={k:v代表k,如果v不是None,则在您的dict.items()中的v}

对于
参数
构造函数缺少参数-默认情况下,它设置为
True
。通过将此参数设置为
False
,我们只获得在请求中传递的值,而跳过其他解析器参数,因此我们得到的字典没有
None
值。如果有人正在寻找解决方案,此参数可能会有所帮助

资料来源:

编辑:


比如“Flask RESTful的整个请求解析器部分将被删除,并将被关于如何与其他更好地处理输入/输出内容的包集成的文档所取代(例如)这意味着它将被保存到2,但是考虑它被弃用。不用担心,如果你现在有代码,并且希望继续这样做,它不会太快消失。“< / P>是的,我能做到。”但是,带有
{…'valueInQuestion':null}
的请求与根本不包含的字段之间存在巨大差异。如果有一种方法一开始就不把它包括在dict中,我会更喜欢它。有什么方法可以做到这一点吗?在Python中,“null”对象是单例None,{…“valueInQuestion”:null}是无效代码,然后没有定义null。因此,当设置valueInQuestion value时,上面的代码不会过滤掉它们。我希望我没弄错。虽然Python确实使用
None
来表示
null
,但从POST请求发送的JSON却不是这样。因此,我希望
POST{…'valueInQuestion':null}
在Python中转换为
{…'valueInQuestion':None}
。我希望
POST{}
在python中翻译成
{}
,而不是
{…'valueInQuestion':None}
。然后使用request.get_json(),这就是你想要的,如果你想验证,你也可以查看棉花糖。谢谢你迟来的回答!我已经离开了这个项目,推出了我自己的解决方案,但这会有所帮助,所以我把它作为公认的答案。
parser = reqparse.RequestParser()
parser.add_argument("firstName", type=str)
parser.add_argument("lastName", type=str)
parser.add_argument("age", type=int)
parser.add_argument("valueInQuestion", type=str)