【问题标题】:Send form data to MongoDB using Flask使用 Flask 将表单数据发送到 MongoDB
【发布时间】:2016-03-23 03:28:21
【问题描述】:

我在使用 Flask 设置将我的 form 数据发送到 MongoDB 时遇到问题。表单如下所示:https://jsfiddle.net/8gqLtv7e

在客户端,我没有看到任何错误。但是当我提交表单时,我收到 500 Internal Server Error 并且我很难找到解决方案。问题是我的views.py 文件中的最后一行:

@app.route('/recordReport', methods=['POST'])
def recordReport():
    homeReportsCollection = db["reports"]
    address=request.form.get['address']
    rgbImage=request.form.get['rgb']
    homeReportsCollection.insert({'address':address, 'rgb':rgbImage})

因为如果我用return json.dumps({'status':'OK', 'address':'address', 'rgb':'rgbImage'}) 替换它,我可以在浏览器中看到正确的数据。我只是无法将它发送到 MongoDB 中的集合。

【问题讨论】:

  • 你不应该使用insert_one()吗?
  • homeReportsCollection.insert_one({'address':address, 'rgb':rgbImage}) 仍然导致 500 内部服务器错误。
  • 在插入之前您是否尝试过将addressrgbImage 类型转换为String
  • 我打错了。 addressrgbImage 都作为字符串发送。刚刚编辑了我的问题。所以不需要在 Python 端这样做。
  • 老实说,我很难过。早在 2013 年,Mongo 就有一个错误。数据将被插入到集合中。但是 Mongo 不会返回正确的状态响应。这导致服务器运行 500。您是否尝试过验证数据是否确实插入到集合中?此外,在 debug=True 模式下运行您的烧瓶应用程序。这可能会提供更多数据。

标签: python mongodb flask pymongo


【解决方案1】:

这个答案是对 cme​​ts 的总结(找到了解决方案)。


您是否尝试在插入之前将addressrgbImage 类型转换为String

类型失效是数据库操作中许多常见错误的根源。

早在 2013 年,Mongo 就有一个错误。数据将被插入到集合中。但是 Mongo 不会返回正确的状态响应。这导致服务器运行500。您是否尝试过验证数据是否确实插入到集合中?

另外在debug=True 模式下运行您的烧瓶应用程序。这可能会提供更多数据。

Flask 具有非常好的调试回溯报告支持。这通常是一个好主意。其实这应该是遇到错误的第一件事。

所以这很奇怪,我打开debug=True 并收到以下错误:ValueError: View function did not return a response. 但数据实际上是通过homeReportsCollection.insert({'address':address, 'rgb':rgbImage}) 线发送到数据库的。我在我的收藏中看到它。如何修复错误?因为用户被重定向到/recordReport

所以数据确实被插入到集合中。这可能是 Flask 唯一的问题。追溯说明了一切。 Flask 要求视图方法返回一些东西。

尝试在您的函数recordReport() 中返回一些内容。退回任何您想要的东西。可能是OK 消息。它可能是您刚刚插入集合中的文档的_id不要返回None试试这个。

此行为记录在此SO question

是的,我返回了一个 HTML 模板,现在没有错误。

这确实是解决方案。从您的 视图方法中返回除 None 以外的其他内容。这也验证了提问者在问题中观察到的行为:

因为如果我将其替换为 return json.dumps({'status':'OK', 'address':'address', 'rgb':'rgbImage'}),我可以在浏览器中看到正确的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-08
    • 2020-04-11
    • 2019-04-30
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多