flask-restful解析器的datetime格式是什么?

时间:2014-10-30 20:31:51

标签: python datetime flask flask-restful

假设我在get方法中有以下解析器:

from flask.ext.restful import reqparse

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

然后我想用curl测试所说的get方法......

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

所以问题是,我应该如何调用get方法?我尝试了很多不同的格式,尝试阅读rfc228标准等,但我无法找出正确的格式。

2 个答案:

答案 0 :(得分:14)

有点晚了,但我刚刚遇到同样的问题,试图用RequestParser解析日期时间,遗憾的是文档对这种情况没那么有用,所以看到并测试了RequestParser和Argument代码之后,我我想我发现了这个问题:

当您在type=datetime方法中使用add_argument时,它只需使用arg调用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 functool而不是lambda来获得相同的结果或命名函数。

此解决方法是in the docs

答案 1 :(得分:2)

仅需对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

来自the docs