问题标签 [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.
python - 使用 Flask 的 url_for 在 URL 中生成列表
我正在使用 webargs 从request.args
Marshmallow 中解析参数并将它们作为参数传递给 Flask 视图。我的客户使用逗号分隔的列表来表示一个键的多个值:
为了解析这个,我使用 Marshmallow 的DelimitedList
字段。
但是,如果我使用 Flask's 生成 URL url_for
,它会为每个值生成重复的键:
用DelimitedList
字段解析它只会捕获第一个值。更改为List
正确的字段会再次捕获值。所以要么我的 Flask URL 失败,要么我的客户端 URL 失败。
我无法更改客户端生成 URL 的方式,所以我想坚持使用DelimitedField
. 我怎样才能url_for
生成相同的样式?
python - Marshmallow 允许为一个值保留 none,但不清除该值
我想温和地强制用户群中的用户设置一个以前不需要但现在需要的值。
这是设置
从数据库中获取的用户会根据数据库绑定的棉花糖模式进行验证,这允许 None 值。
新用户根据不允许 None 的棉花糖模式进行验证。
已编辑的用户将根据另一个棉花糖模式进行验证,这是棘手的部分。
我希望不设置该字段也可以,如果以前未设置,但一旦设置,您应该无法将其删除。
这是如何在棉花糖中指定的?
python - 用 Peewee 和 Marshmallow 序列化多对多关系
我有一个带有多对多用户的 PostgreSQL 数据库,以标记与下表的关系:
- social_user:用户信息
- 标签:标签信息
- user_tag:social_user和标签之间的多对多关系
我正在尝试使用 Flask、Peewee 和 Marshmallow 构建一个简单的 API 来访问该数据库中的数据。我们现在可以忽略 Flask,但我正在尝试为social_user创建一个模式,它允许我转储一个查询,该查询返回一个或多个用户及其各自的标签。我正在寻找类似于以下内容的响应:
我已经设法通过在 @post_dump 包装函数中包含第二个查询来拉取social_user模式中的标签来做到这一点,但是,这感觉像是一种黑客行为,而且对于大量用户来说似乎会很慢(更新:这很慢,我在 369 个用户上测试过)。我想我可以用 Marshmallow 的fields.Nested
field type做一些事情。有没有更好的方法可以只用一个 Peewee 查询来序列化这种关系?我的代码如下:
皮威模型
棉花糖模式
以下是一些演示功能的测试:
python - Flask-Marshmallow 的 init_app() 真的有必要吗?
Flask-Marshmallow 文档有这样的说法Marshmallow.init_app()
使用扩展名初始化应用程序。
它背后的代码似乎做了一些与 SQLAlchemy 会话管理相关的重要事情:
但是我一直在使用和开发我的应用程序一段时间,但没有包括对init_app
任何地方的调用,而且它似乎工作得很好。我正在使用 SQLAlchemy、Flask-SQLAlchemy 和 Marshmallow-SQLAlchemy(以及 Flask-Marshmallow)。
我不做会导致什么问题ma.init_app(app)
,为什么一切似乎都正常?
目前,我有一个database
和一个schema
模块;database
看起来像这样:
像这样schema
:
在我的顶层__init__.py
,我正在这样做:
这是一个 MVCE(放入mvce/__init__.py
,运行PYTHONPATH=. FLASK_APP=mvce flask run
,然后向 localhost:5000 发出 POST 请求,并将name
表单字段设置为某个值,然后发出 GET 请求以查看Customer
是否正确提交到数据库):
python - 将 Flask-Marshmallow 与 marshmallow-jsonapi 结合使用
概述
我正在使用 Flask-SqlAlchemy,现在我正在研究棉花糖来帮助我序列化和反序列化请求数据。
我能够成功:
使用Flask-SqlAlchemy创建我的模型
通过使用可选的 Flask-SqlAlchemy 集成,使用Flask-Marshmallow使用相同的模型序列化数据库对象
使用marshmallow-jsonapi快速生成符合 Json API 的响应。这需要我声明新的 Schema以指定我想要包含的属性(这与 Flask-SqlAlchemy 模型重复)
代码示例
Flask-SqlAlchemy 声明式模型
flask_marshmallow 模式声明(继承自 SqlAlchemy 模型)
marshmallow_json api - 需要新的模式声明,必须包含每个属性和手动类型
问题
如代码所示,marshmallow-jsonapi允许我创建符合 json api 的响应,但我最终不得不维护一个声明模型 + 模式响应模型。
flask-marshmallow允许我从 SqlAlchemy 模型创建 Schema 响应,因此我不必为每个模型维护一组单独的属性。
问题
是否可以一起使用flask-marshmallow和marshmallow-jsonapi 1. 从 SqlAlchemy 模型创建 Marshmallow Schema,并自动生成 json api 响应?
ma.ModelSchema
我尝试在两个命令中创建从and继承的 Schema 声明marshmallow_json.Schema
,但它不起作用(引发缺少方法和属性的异常)
棉花糖-jsonapi
marshmallow-jsonapi 提供了一种在任何 Python Web 框架中生成符合 JSON API 的数据的简单方法。
烧瓶棉花糖
Flask-Marshmallow 包含用于与 Flask-SQLAlchemy 和 marshmallow-sqlalchemy 集成的有用附加功能。
python - 如何在 Marshmallow 中创建嵌套的 json 模式?
我正在尝试从 SQL Server 中的表中获取数据并将其转换为 JSON 格式。我使用 Marshmallow 实现了向基本 JSON 格式的转换。我没有广泛使用 JSON。要求是将其转换为分层 JSON 格式,如下所示:
所需的 JSON 格式:
我已经从表中读取数据,创建了一些函数并实现了这种格式:
样本实现格式:
由于这涉及根据值对数据进行分组,因此我无法弄清楚如何进行。请帮忙。
python - 是否可以将 Postgres Interval 数据类型与 Marshmallow 模式序列化一起使用?
SqlAlchemy 支持这样的Interval 数据类型:
是否可以使用 Marshmallow 模式序列化间隔列类型?我希望得到类似以下的东西:
...但是Marshmallow 不支持区间数据类型。Marshmallow API 文档提到了其他原始数据类型和字符串,但到目前为止我还不能让它工作。
感谢您提供任何提示或建议。
python - 验证 Marshmallow 中的字段,但不要反序列化它
我正在尝试基于模型构建 Marshmallow 架构,但带有一个附加字段。虽然这似乎通过自行声明特殊字段然后设置meta.model
为我分配的模型来工作,但我无法找到解决方案以使附加字段得到验证(它被标记为必需),但在结果中没有出现,反序列化的对象。
我尝试将其设置为excluded
and dump_only
,但无济于事,要么验证不发生,要么反序列化的对象还包含附加字段(然后与我的 ORM 冲突)。
python - 内部类作为棉花糖中的嵌套模式?
是否可以在 Marshmallow ( https://marshmallow.readthedocs.io/en/latest/ )中使用内部类作为嵌套模式?
我试图在棉花糖中表示一个分层模式,这似乎是通过嵌套模式完成的。例如,我有一个Method
对象,它有一个Params
属性,它本身就是一个对象。我可以将其表示为:
我想做的是:
但这失败并出现错误:
找不到名为“MethodSchema.MethodParamsSchema”的类。您可能需要导入该类。
我想这样做的原因是因为我的模式是相当分层的,我想将相关项目组合在一起。有没有办法做到这一点?