当前位置: 首页 > 知识库问答 >
问题:

烧瓶的jsonify函数与烧瓶-Marshmallow不一致

池麒
2023-03-14

我正在使用flask-RESTful开发API,并且对Flask的jsonify函数有问题。我正在使用flask-marshmlet进行JSON序列化。下面是一个非常简化的代码片段:

result = activities_schema.dump(activities)
return jsonify(result)

在本地,endpoint将返回具有键“data”和“error”的json;但是,当在Linux服务器上运行时,它会返回一个包含列表和在没有“data”和“error”键的情况下返回的结果。

我已经确定这种不一致是由Flask的jsonify函数引起的,它在API返回结果之前打印出结果。在本地和服务器上,“结果”等于:

MarshalResult(data=[], errors={})

然而,当我在使用Flask的jsonify之后打印响应时,我在本地得到了这个:

('{\n  "data": [], \n  "errors": {}\n}', '\n')

当它打印在服务器上时:

('[\n  [], \n  {}\n]', '\n')

有人知道为什么这些不匹配吗?

共有1个答案

陆敏学
2023-03-14

我又研究了一些,并找到了一个解决方案(我觉得有点傻,因为解决方案就在文档中),但无法解释为什么会发生原始问题。

解决方案(在此处找到)是使用:

jsonify(result.data)

或:

activities_schema.jsonify(result)

两种方法都只返回数据,而不返回错误。

我仍然无法解释为什么在服务器和本地机器之间以另一种方式运行是不一致的,但这可能是另一个问题。

 类似资料:
  • 我发现很难找到有关这方面的资料。会是什么?我如何解决这个问题?有哪些可能的修复方法? UWSGI日志文件 时钟来源:unix检测到CPU核数:4当前工作目录:/home/pi检测到二进制路径:/usr/local/bin/uwsgi!!!没有内部路由支持,重建与pcre支持!!!*警告:您在没有主进程管理器的情况下运行uWSGI进程数限制为7336内存页大小为4096字节检测到最大文件描述符号:6

  • 我已经用flask在python上制作了一个restapi(端口:5000),我正在从一个网站(端口:80)发出get和post请求。我收到了cors错误,所以我尝试在RESTAPI中为站点创建一个响应头。但是我得到了导入错误: 我已经下载了烧瓶cors模块并升级它,并确保它是在正确的路径,但它仍然不工作。 API代码:

  • 我正在建立一个小网站,我已经在SQLAlChemy中拥有了我所有的模型。该网站将发布一些离线计算的信息。只有结果将被发布到一个精简的数据库,即它包含结果,而不是原始数据,但网站需要查询结果。 我将使用Flask,因为我的模型已经用Python驱动了(通过SWIG在C中进行了一些繁重的工作),我不想使用Django。 我敢肯定,以前有人问过这个问题,通常没有太多理由的咒语是“使用炼金术”。问题是为什

  • 我在这里遵循烧瓶教程: http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world 我达到了我尝试的程度/跑py和我得到: 这看起来类似于: ImportError:没有名为flask的模块 但他们的解决方案没有帮助。作为参考,我确实有一个名为flask的文件夹,其中一位用户提到该文件夹可能会导致问题

  • 我当前在运行flask代码时遇到以下错误: 瓶子调试助手。FormDataRoutingRedirect-FormDataRoutingRedirect:已向此URL发送请求(http://localhost:5000/login)但路由系统自动发出重定向到“http://localhost:5000/login/“。URL是用尾随斜杠定义的,因此如果在没有尾随斜杠的情况下访问,Flask将自动重

  • 问题内容: 我正在尝试使用Flask创建一个Web应用程序,该应用程序允许用户上传文件并将其提供给其他用户。现在,我可以将文件正确 地上 传到 upload_folder了 。但是我似乎找不到找到让用户下载回来的方法。 我将文件名的名称存储到数据库中。 我有一个为数据库对象服务的视图。我也可以删除它们。 在我的HTML中,我有: 和下载视图: 但它正在返回: 未找到 在服务器上找不到请求的URL。