flask-restful 解析器的日期时间格式是什么?

19 投票
2 回答
14349 浏览
提问于 2025-04-30 17:33

假设我在我的获取方法里面有一个解析器:

from flask.ext.restful import reqparse

parser = reqparse.RequestParser()
parser.add_argument('when', type=datetime, help='Input wasn\'t valid!')

然后我想用curl来测试这个获取方法...

curl --data "when=[WHAT SHOULD I WRITE HERE?]" localhost:5000/myGet

所以问题是,我应该怎么调用这个获取方法呢?我试过很多不同的格式,也看过rfc228标准等等,但就是找不到正确的格式。

暂无标签

2 个回答

7

这是关于Flask-Restful(版本0.3.5)的一个更新:如果你只需要ISO 8601或RFC 822格式的话,可以使用它自带的日期和时间功能来解析。

from flask_restful import inputs

parser.add_argument('date', type=inputs.datetime_from_iso8601)

所以请求的格式会是这样的,

curl --data "date=2012-01-01T23:30:00+02:00" localhost:5000/myGet

详细信息可以查看文档

29

有点晚了,但我刚好遇到了同样的问题,想用RequestParser来解析日期时间,结果发现文档对这种情况帮助不大。经过查看和测试RequestParser和Argument的代码,我觉得找到了问题所在:

当你在add_argument方法中使用type=datetime时,实际上它只是调用了datetime并传入参数,像这样:datetime(arg)。所以如果你的参数是像2016-07-12T23:13:3这样的字符串,就会出现an integer is required的错误。

在我的情况下,我想把格式为%Y-%m-%dT%H:%M:%S的字符串解析成一个日期时间对象,所以我想用类似type=datetime.strptime的方式,但你知道这个方法需要一个格式参数。最后我用了这个变通方法:

parser.add_argument('date', type=lambda x: datetime.strptime(x,'%Y-%m-%dT%H:%M:%S'))

这样你就可以使用任何你想要的日期时间格式了。此外,你也可以用partial函数工具来代替lambda,得到同样的结果,或者使用一个命名的函数。

这个变通方法在文档中有提到

撰写回答