【发布时间】:2020-03-09 22:09:27
【问题描述】:
我正在使用 Flask 创建 API。 对于每个请求,我都必须验证 request.args 或 request.json 并在 query params 或 request body 时抛出错误 是意外的形式或不同的 datatype 或 None。
然后从 request body 或 query params 中提取一些项目。有许多这样的 API,我需要从 query params 或 request body 中提取一些项目并使用这些值执行数据库函数,例如执行SQL 查询并传递来自 请求正文 或 查询参数 的数据。
每次在 API 视图函数中,我都必须为一个数字执行 request.args.get 或 request.json.get的变量。
我只是在想是否有更好的方法可以使内存中的项目可用,而无需明确地将每个项目从字典中拉出(类似于 React 中的解构)。
我已经搜索并发现确实有一种方法可以做到这一点,这是不可取的。 https://stackoverflow.com/a/2955476/4626254
我只是想知道是否有更好的方法来做到这一点。
【问题讨论】:
-
Python 不支持字典解构之类的东西。自己做是最好的方法。请注意,链接的答案不正确。
-
在什么情况下解构?您可以使用 * 语法将字典或元组作为函数参数传递给 unpack,这类似于解构
-
我假设您的意思是 JS 中的对象解构,例如
{a, b} = {a:1, b:2, c:3}。但是,是的,Python 不支持这一点。在 Python 中,您必须执行类似a = my_dict['a']; b = my_dict['b']的操作 -
是的。这就是我所指的。对象解构。
-
“pydantic”项目可能对您来说是一个不错的选择 - 您可以使用您将使用的参数创建一个类,并且使用最少的模糊度,并将您的 json 传递给它以获取经过验证的 Python 对象这很容易使用。 pydantic-docs.helpmanual.io - 或者只是自己编写一个基类和带有所需字段的实例类 - 这很简单。
标签: python local-variables destructuring