问题标签 [marshmallow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2336 浏览

python - Marshmallow 根据运行它的机器对时间戳的处理方式不同

我正在使用 Flask 在 python 中制作 REST API。我使用 SQLalchemy 和 Marshmallow 来处理和存储进出 API 的数据。

我有一条用于创建事件的路线。它需要一个日期时间作为 POST 有效负载的信息之一。在模型中,该字段使用 TIMESTAMP 类型。SQLalchemy 的 TIMESTAMP 类型是支持时区的日期时间。

当我在 Linux 上运行 API 时,一切正常,但是当我在 Windows 上运行它时,数据进来了,因为它应该从棉花糖的模式中传递到 load() 方法中,
post_campaign, errors = campaign_schema.load(request.get_json()) 一旦它被加载到模式中,日期时间就丢失了时区数据,这对我来说是个大问题。

我没有在我的模式中做任何特殊操作,它是一种“经典”的模式。

基本上,在我的机器和其他一些机器上,我有

test_campaign (tests.test_setup.Testing) ...
<------------------>
现在 2017-05-05 09:52:39.014386+00:00 使用日期时间生成。 utcnow().replace(tzinfo=pytz.utc)
在模式中加载之前 2018-05-05 08:35:17.361864+00:00
模式中的数据 2018-05-05 08:35:17.361864+00:00
<- ----------------->

在我有的其他机器上

test_campaign (tests.test_setup.Testing) ...
<------------------>
现在 2017-05-05 09:52:39.014386+00:00
在模式加载之前2018-05-05 08:35:17.361864+00:00
架构中的数据 2018-05-05 08:35:17
<----------------->

我的模式(ma 是棉花糖):

你们中有人知道这种行为吗?

0 投票
2 回答
4117 浏览

python - 序列化对象时转换对象

鉴于 :

comm_value在序列化之前如何操作该字段?

例如,该字段comm_value是一个字符串1234:5678,我想将其转换为1234_5678.

您能否就如何实现这一目标提出建议?

PS。pre_dump看起来是正确的做法,但我不确定,因为这是我第一天使用marshmallow

0 投票
1 回答
1312 浏览

python - 棉花糖:将字典转换为元组

鉴于

输入数据x是:

marshmallow架构如下:

让我们加载它及其数据:

如果我们打印它,我们会得到:

目标:我希望最终结果是:

zzz.data当我这样做而不是获取 dict时,如何实现该结果(元组) ?

0 投票
4 回答
19191 浏览

python - 如何以不同的名称序列化 Marshmallow 字段

Schema 我想要一个带有以下输出 json的 Marshmallow -

Marshmallow 不会序列化私人成员,所以这是我能得到的最接近的 -

但我确实需要输出 json 中的下划线。

有没有办法告诉 Marshmallow 使用不同的名称序列化字段?

0 投票
2 回答
2534 浏览

python - marshmallow `validates_schema` 拒绝带有 `pass_many=True` 的未知字段

Schema当传递一个对象列表进行验证时,我很难理解如何处理未知字段。我到目前为止:

但这显然不起作用,因为每次都会为列表中的所有项目运行验证器。因此将捕获第一个错误,并在所有项目上返回:

我试图想出一种方法来仅从original_data对应于data参数的单个项目中获取并仅验证该项目,但我不能真正做到这一点,因为项目没有 id 或使它们可搜索的字段......

我错过了什么吗?有针对这个的解决方法吗?

0 投票
1 回答
299 浏览

python - python 拥抱 - 不能在 MarshmallowSchema 中使用嵌套

使用 HUG 构建 Rest API,版本 2.3.0 ( https://github.com/timothycrosley/hug )

我无法在 HUG 中使用 Marshmallow 的嵌套功能。这是一些代码。

当我尝试使用此示例数据执行 POST 请求时,我在嵌套字段中得到了空数据。

使用 pdb:

任何人都可以在 HUG 中使用 Marshmallow 的嵌套功能。如果是,该怎么做?

0 投票
1 回答
762 浏览

python - 如果使用 Marshmallow,SQLAlchemy 不会创建表

我正在尝试使用 、 和 (也尝试过)创建一个项目Flask,但是这些Flask-SQLAlchemy工具的集成效果不佳。每次我包含一些新库时,都会出现一个新错误。flask-restplusmarshmallowflask-marshmallow

我已经放弃使用migrationswithFlask-SQLAlchemy因为某种原因,这个东西不起作用。但现在,问题出在marshmallow.

我正在尝试使用模块,我认为这是问题的一部分(Flask-SQLAlchmey、flask-restplus、flask-marshmallow 等的所有示例都将所有内容放在一个文件中)

这是我的app.py

api/__init__.py

database/__init__.py

model我有我的应用程序,到目前为止只有一个:

database/models/User.py

现在,如果我使用以下代码(每次我的应用程序以调试模式、函数reset_database、文件database/__init__.py启动时都会调用此代码):

User表没有创建,admin也没有插入到表中,因为该表不存在(db.create_all()不要创建任何东西)。

sqlite3.OperationalError: no such table: user.

出于某种原因,如果我删除了类UserSchema(在database/models/User.py 上),该db.create_all()函数将创建表)。

0 投票
1 回答
7508 浏览

flask - Flask-SQLAlchemy-Marshmallow 嵌套

我正在尝试使用 Flask 中的 Marshmallow 从一对多关系模型中序列化数据。我阅读了 Marshmallow 和 SQLAlchemy 文档,但无法正常工作。任何人都可以帮助我。

楷模:

架构:

我正在寻找这样的输出:

0 投票
0 回答
33 浏览

python - 来自 REST 的客户端 HTML 表的流行模式

我使用烧瓶和棉花糖构建了一个 REST API。现在我想在客户端的表中显示数据(我正在使用 vuejs)。

API 中的 JSON 包含相关对象,如下所示:

我无法将此信息直接推送到表格中。我正在寻找最佳实践:在 API 上为扁平化的“表就绪”JSON 提供 arg,或者只是在添加到表之前重新处理数据,或其他?

0 投票
0 回答
2057 浏览

python - 部分严格的棉花糖模式

我有一个 Flask Rest Api,它使用棉花糖进行序列化-去现实化。Api 收到一批项目。

我想对每个项目的输入架构执行严格验证,而不是对整个请求进行验证。 这样做的目的是允许我进行细粒度的错误处理,即处理整个批处理请求并返回错误项目的验证错误。

示例时间!

假设这是我的主要 Rest Json 请求模式(注意Nested字段列表) -

这是我的Nested field架构-

我想要棉花糖 1) 反序列化整个请求模式和 2) 为我提供每项模式验证错误或序列化对象。使用这种行为,我将处理每个Item. 对于每个包含验证错误的项目,我将返回一个错误对象,对于有效的项目,我将返回一个正确的响应项目。

所以对于这样的请求 -

我想按照以下方式回复 -

棉花糖是否支持这种行为?

关于实施这个有什么建议吗?

理想情况下,我想要一个包含尽可能多的 Flask+Marshmallow 的答案(而不是自己实现逻辑)

谢谢!