【问题标题】:Edit and save a document using Flask and Mongodb使用 Flask 和 Mongodb 编辑和保存文档
【发布时间】:2018-01-20 20:38:54
【问题描述】:
@app.route('/edit_book/<id>', methods=['POST', 'GET'])
def edit_book_id(id):
   books = connexion.db.books
   item = books.find_one({'_id': ObjectId(id)})

   if request.method == 'GET':
     if session['username'] is not None:
       return render_template('edit_book.html', username=session['username'], mybooks=item)

   books.update_one({"id": id},
                 {
                     "$set": {"title": request.form.get('title'),
                              "author": request.form.get('author'),
                              "edition": request.form.get('edition'),
                              "price": request.form.get('price'),
                              "image": request.files.get('image'),
                              "date": datetime.datetime.utcnow()
                              }
                 })

return 'Updated, success'

html文件:

<form action="" method="POST" enctype=multipart/form-data>
    <h2>Title</h2>
      <input type="text" name="title" size="60" value="{{mybooks.title}}"><br>
    <h2>Author</h2>
      <input type="text" name="author" size="60" value="{{mybooks.author}}"><br>
    <h2>Edition</h2>
      <input type="text" name="edition" size="60" value="{{mybooks.edition}}"><br>
    <h2>Price</h2>
      <input type="text" name="price" size="60" value="{{mybooks.price}}"><br>
    <h2>Upload </h2>
      <input type="file" name="image"/><br>
    <br>
      <input type="submit" value="Submit">
</form>

我使用表单来编辑 Mongodb 数据库中的文档。我可以使用 GET 方法编辑文档,但问题在于 POST 方法,我无法更新文档。我是 Flask 的新手。 我想我无法在编辑后恢复这些字段。

【问题讨论】:

  • POST 后是否有任何错误信息?
  • @dvnguyen 没有错误,但 Mongodb 没有变化

标签: mongodb python-3.x flask jinja2


【解决方案1】:
books.update_one({"_id": ObjectId(id)},
                  { "$set": {
                             "title": request.form.get('title'),
                              "author": request.form.get('author'),
                              "edition": request.form.get('edition'),
                              "price": request.form.get('price'),
                              "image": request.files.get('image'),
                              "date": datetime.datetime.utcnow()
                             }
                 })

忘记ObjectId(id)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 2020-07-18
    相关资源
    最近更新 更多