我有以下数据:
data={
'last_visit':datetime.datetime(2020, 9, 30, 11, 12, 24, 512347)
}该模式基于模型:
class ModelSchema(db_schema.SQLAlchemyAutoSchema):
class Meta:
model = UserModel以及模型本身:
class UserModel(db.Model, AllFeaturesMixin):
last_visit= db.Column(db.DateTime, nullable=False, default=datetime.utcnow)当我做验证时,我有一个错误:
> schema.validate(self.data)
> {'last_visit': ['Not a valid datetime.']}不知道为什么。
发布于 2020-10-04 19:54:58
应该对来自flask.request.get_json()或等效的原始数据调用validate()。您正在寻找的是来自json.loads()之类的东西的反序列化的原始结果。使用这个原始字典,last_visit仍然是一个字符串,并且是marshmallow DateTime field所期望的(格式化的日期时间字符串)。
下面是一个基本的例子:
import datetime
import json
import flask
import marshmallow as ma
from datetime import timezone
app = flask.Flask(__name__)
default_headers = {"Content-Type": "application/json"}
class ModelSchema(ma.Schema):
last_visit = ma.fields.DateTime()
@app.route("/last_visit", methods=["POST"])
def get_last_visit():
schema = ModelSchema()
data = flask.request.get_json()
errors = schema.validate(data)
if errors:
return errors, 400, default_headers
last_visit_data = schema.load(data)
last_visit_data["last_visit"] = datetime.datetime.now(tz=timezone.utc)
last_visit_response_data = schema.dumps(last_visit_data)
return last_visit_response_data, 200, default_headershttps://stackoverflow.com/questions/64142892
复制相似问题