首页 > 解决方案 > Flask:从数据库更新现有数据

问题描述

对于以下模型和路线,如何让页面在可编辑框中显示数据库字段中的现有数据,并带有“保存更改”按钮。

# MODEL
class Task(db.Model): #inherits from db>Model
    __tablename__ = "Tasks"

    id = db.Column(db.Integer, primary_key=True)
    # datetime, need to work this out
    Title = db.Column(db.String(4096))
    Status = db.Column(db.String(4096))
    Description = db.Column(db.String(4096))
    Priority = db.Column(db.String(4096))
    Assigned_To = db.Column(db.String(4096))

# ROUTE:
@app.route("/<int:task_id>/edit")
def _edit(task_id):
    task = Task.query.get_or_404(task_id)
    return render_template('update.html',task=task)
<—- update.html—->
<form method="POST" action="">
            <fieldset>
             {{ task.Title }}
             {{ task.Description }}
            </fieldset>
        </form>

如果可能,我宁愿不定义表单。我已经配置并运行了一个 SQL Alchemy 数据库。

添加到此问题末尾的路线运行良好 - 将新任务(行)添加到数据库并创建单个页面以查看单个任务(行):


@app.route("/tasks", methods=['GET', 'POST'])
def new_post():
    if request.method == "GET":
        return render_template("tasks.html")
    data = Task(
        Title=request.form["title"],
        Description=request.form["description"],
        Status=request.form["status"],
        Priority=request.form["priority"],
        Assigned_To=request.form["assigned"],
        )
    db.session.add(data)
    db.session.commit()
    return redirect(url_for('index'))

@app.route("/<int:task_id>")
def qtsk(task_id):
    task = Task.query.get_or_404(task_id)
    return render_template('indtask.html',task=task)

我是烧瓶的新手,我将不胜感激。

标签: pythonflaskflask-sqlalchemy

解决方案


我在问一个类似的问题。我认为您可以使用表单进行更新。它不必以表格形式呈现给用户。您可以编写一个不像表单的 html 模板,但您需要一个表单来获取数据。也许你可以使用 javascript 而不是你可以跳过表单的使用。我要记住 javascrip 并将其用于我的应用程序。


推荐阅读