【问题标题】:What is the datetime format for flask-restful parser?flask-restful 解析器的日期时间格式是什么?
【发布时间】:2014-12-27 01:36:28
【问题描述】:

假设我的 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 标准等,但我无法找出正确的格式。

【问题讨论】:

  • 我刚刚注意到,flask-restful 网页上的文档似乎提前了,因此日期时间解析器可能尚未实现(我使用的是 0.2.12 版) .我不能肯定地说。
  • 如果您正在关注文档,那么它可能是针对尚未在 pip 中的最新构建,您可以克隆 github 项目并检查问题是否仍然存在。

标签: python datetime flask flask-restful


【解决方案1】:

有点晚了,但我刚刚遇到了同样的问题,尝试使用 RequestParser 解析日期时间,遗憾的是文档对这种情况没有太大帮助,所以在查看和测试 RequestParser 和 Argument 代码之后,我想我发现问题:

当您在add_argument 方法中使用type=datetime 时,在后台它只是使用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

【讨论】:

    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      • 2021-11-30
      • 2015-01-01
      相关资源
      最近更新 更多