Python 如何检查棉花糖模式';s日期时间字段小于今天';谁的日期?

Python 如何检查棉花糖模式';s日期时间字段小于今天';谁的日期?,python,python-3.x,datetime,marshmallow,flask-marshmallow,Python,Python 3.x,Datetime,Marshmallow,Flask Marshmallow,我有一个接受POST方法的端点。POST正文包含格式为-的DateTime字段%Y-%m-%d%H:%MZ“。我需要验证该日期时间是否小于UTC中的当前日期时间。我正在使用Marshmallow验证请求主体 run_datetime = fields.DateTime(format="%Y-%m-%d %H:%MZ") 此案例是否有任何内置的验证器来验证DateTime字段。或者我应该为此编写一个自定义函数来比较run\u datetime与今天的UTC的datetime没有可以解决您手头特定

我有一个接受
POST
方法的端点。
POST
正文包含格式为-
DateTime
字段%Y-%m-%d%H:%MZ“
。我需要验证该日期时间是否小于UTC中的当前日期时间。我正在使用
Marshmallow
验证请求主体

run_datetime = fields.DateTime(format="%Y-%m-%d %H:%MZ")

此案例是否有任何内置的验证器来验证
DateTime
字段。或者我应该为此编写一个自定义函数来比较
run\u datetime
与今天的
UTC的datetime

没有可以解决您手头特定问题的内置验证器,请查看可用的验证器。 尽管定义自己的验证器非常简单,但对于您的特定情况:
fields.Datetime
将接受名为
validate
的参数,该参数可以接受返回bool的函数。例如,我在这里快速定义了一个lambda来验证datetime是否比“now”更近:

从日期时间导入日期时间
从棉花糖导入模式,字段
现在=日期时间(2020,11,23,14,23,0579974)
类用户(架构):
id=fields.Integer(必需=True)
name=fields.String(必需=True)
#在此处定义任意日期时间,如NOW或仅使用datetime.NOW()
date\u created=fields.DateTime(必需=True,验证=lambda x:x>NOW)
#这将成功
User().load(dict(
id=10,
name=“Test”,
#请注意,此日期比以前现在定义的日期更晚
创建日期=“2020-11-23T14:24:40.224965”,
))
#{'date_created':datetime.datetime(2020,11,23,14,24,40224965),
#“id”:10,
#“名称”:“测试”}
#而这将失败
User().load(dict(
id=10,
name=“Test”,
#这里的日期比现在晚了一个月
创建日期=“2020-10-23T14:24:40.224965”,
))
#ValidationError:{'date_created':['Invalid value.]}

没有内置的验证器可以解决您手头的特定问题,请查看可用的验证器。 尽管定义自己的验证器非常简单,但对于您的特定情况:
fields.Datetime
将接受名为
validate
的参数,该参数可以接受返回bool的函数。例如,我在这里快速定义了一个lambda来验证datetime是否比“now”更近:

从日期时间导入日期时间
从棉花糖导入模式,字段
现在=日期时间(2020,11,23,14,23,0579974)
类用户(架构):
id=fields.Integer(必需=True)
name=fields.String(必需=True)
#在此处定义任意日期时间,如NOW或仅使用datetime.NOW()
date\u created=fields.DateTime(必需=True,验证=lambda x:x>NOW)
#这将成功
User().load(dict(
id=10,
name=“Test”,
#请注意,此日期比以前现在定义的日期更晚
创建日期=“2020-11-23T14:24:40.224965”,
))
#{'date_created':datetime.datetime(2020,11,23,14,24,40224965),
#“id”:10,
#“名称”:“测试”}
#而这将失败
User().load(dict(
id=10,
name=“Test”,
#这里的日期比现在晚了一个月
创建日期=“2020-10-23T14:24:40.224965”,
))
#ValidationError:{'date_created':['Invalid value.]}

没有,没有内置的。定义你自己的验证器(参见上面的文档链接)。不,没有内置的。定义您自己的验证器(参见上面的文档链接)。