【发布时间】:2018-11-24 16:55:09
【问题描述】:
我想过滤一些数据库结果,对于带有一些日期参数的给定 url(比如这个url.com?start=2018-12-12)。读取参数的正常方法是使用request.args.get,访问底层ImmutableMultiDict 的值,这为我提供了可选参数default 和type。
我现在的第一次尝试是这样的:
@app.route()
def event():
ektempo = request.args.get('start', default = datetime.date.today(), type = datetime.date)
...
这适用于默认参数,但不适用于传递的日期字符串,因为datetime.date 需要三个整数作为参数。通常我会通过datetime.datetime.strptime 和格式字符串来获取我的日期对象。有没有办法将日期时间字符串作为 url 参数传递给烧瓶并将其以 Python 方式转换为 datetime.date。
我喜欢request.args.get 的工作方式,但似乎我无法使用给定的url 参数轻松地从中获取datetime.date 对象。是否有另一种方法可以通过烧瓶内置方法来实现它,它验证参数并且没有参数或ValueError 给我默认值?
【问题讨论】:
-
获取日期字符串,然后单独转换为
datetime.date。 -
FWIW 在我看来,您正试图将太多逻辑压缩到一行中。我会先获取字符串(无论是默认值还是来自请求),然后再考虑将其转换为日期对象。
-
你为什么不像数字一样传递一个日期 - 比如 20181212120222 意思是 2018-12-12 12:02:22,然后在你的端点内将其解析为日期?
-
但我的意思是对于其他类型它可以完美地工作......对我来说,如果我有一个类型和一个“转换”参数,那将是完美的。我的意思是你不能指望,适合 url 参数的东西总是会映射到对象的构造函数......不知道,也许
request.args.get仅用于原语,但它似乎是基本的东西我,你可能有一些可能性,为 url 参数获取日期或地理坐标验证器......不知道......对我来说似乎只是很多 LOC,手动验证网站的这些基本类型......跨度> -
我不确定您在此处对类型和转换参数所做的区分。 type 参数已经是可调用的,您可以在其中传递自己的函数,该函数接受字符串并返回您喜欢的任何内容。
标签: python datetime flask url-parameters