gpt4 book ai didi

python - 如何在 Flask-RESTless 中使用关键字参数

转载 作者:行者123 更新时间:2023-12-01 04:51:35 25 4
gpt4 key购买 nike

我和一个 friend 一直在阅读 Flask-RESTless 的文档,它说:

The arguments to the preprocessor and postprocessor functions will be provided as keyword arguments, so you should always add **kw as the final argument when defining a preprocessor or postprocessor function.

但它没有指定我们如何使用这些关键字参数将信息传递给预处理器或后处理器。谁能告诉我们如何做到这一点?

我们的 create_api 现在看起来像这样:

create_api(Foo,
methods=['GET', 'POST', 'PUT', 'DELETE'],
collection_name='p',
url_prefix='/api/v1',
primary_key='uid',
exclude_columns=['id'],
preprocessors={
'POST': [authenticate, validation_preprocessor],
'GET_SINGLE': [authenticate],
'GET_MANY': [authenticate],
'PUT_SINGLE': [authenticate, validation_preprocessor],
'PUT_MANY': [authenticate, validation_preprocessor],
'DELETE': [authenticate]
})

def validation_preprocessor(data=None, **kw):
# Do stuff
pass

我们想要做的是在validation_preprocessor中使用**kw作为我们自己的值。

最佳答案

通过阅读文档,您不会将数据传递给预处理器,您预处理器,数据会传递给

数据的具体格式取决于具体方法:

https://flask-restless.readthedocs.org/en/latest/customizing.html#request-preprocessors-and-postprocessors

The preprocessors and postprocessors for each type of request accept different arguments. Most of them should have no return value (more specifically, any returned value is ignored)....Those preprocessors and postprocessors that accept dictionaries as parameters can (and should) modify their arguments in-place.

你不直接使用 *kw,它只是让你的代码向前兼容 Flask-RESTLess,所以如果他们决定更新 API 并向你的函数发送一组不同的参数,它不会中断.

在您的特定示例中,您只需编辑 data 字典,因为 Python 变量是 pass by assignment ,一旦您编辑它,它就会针对链的其余部分进行编辑。

def validation_preprocessor(data=None, **kw):
if data:
data["foobar"] = "rarr I'm a dinosaur"

我个人认为这很令人困惑,而且不是我期望的事情如何进行,但我认为他们这样做是有原因的。

关于python - 如何在 Flask-RESTless 中使用关键字参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28329594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com