gpt4 book ai didi

python - 从 Flask View 返回任意对象

转载 作者:行者123 更新时间:2023-11-28 21:54:31 25 4
gpt4 key购买 nike

根据 Flask.make_response 的 Flask 文档方法,唯一允许从 View 返回的类型是 app.response_class、str、unicode、wsgi 函数的实例,或者带有已遵循上述之一的响应对象的元组。

我希望能够从 View 中返回我自己的模型和查询,并使用通用代码构建足够的响应、将对象序列化为可接受的格式、从查询构建集合、应用过滤条件等。连接它的最佳位置?

我考虑了以下可能性,但想不出一种正确的方法。

  • 子类化 Response 并设置 app.response_class
  • 子类化 Flask 重新定义 Flask.make_response
  • 将 app.route 包装到另一个装饰器中
  • Flask.after_request
  • ?

edit1:我已经有许多 API 具有我需要在 View 中实现的行为,但我想避免在任何地方重复。

edit2:我实际上正在构建一个 Flask 扩展,其中包含我的应用程序中使用的许多默认做法。虽然一个简单的装饰器肯定可以工作,但我真的需要比这更神奇的东西。

最佳答案

你为什么不直接创建一个函数 make_response_from_custom_object 并结束你的 View

return make_response_from_custom_object(custom_object)

如果它变得普遍,我会把它放到一个 @response_from_custom_object 装饰器中,但是连接到 Flask 中似乎有点矫枉过正。您可以链接装饰器,因此包装 app.route 也没有意义;你只需要

@app.route(..)
@response_from_custom_object
def view(...):
...

如果您能以简单而明确的方式做到这一点,那么让您的代码变魔术并因此降低可理解性是没有意义的。

关于python - 从 Flask View 返回任意对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24057035/

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