如何将数据库中的数据发送到 Flask 中的 html 表单进行编辑

How to sed data from database to html form in Flask for editing

我正在尝试将数据从数据库发送到 Html 表单,但出现了这样的错误

TypeError: 'ImmutableMultiDict' 对象是不可变的

这是编辑数据的烧瓶代码

@app.route('/edit-project/<string:id>', methods = ['GET', 'POST'])
def edit_project(id):

    project = Project.query.get(id)

    request.form['title'] = project.title
    request.form['link'] = project.link
    request.form['description'] = project.description

    if request.method == 'POST':

        title = request.form['title']
        link = request.form['link']
        description = request.form['description']
        image = request.files['image']

        image.save(os.path.join(app.config["IMAGE_UPLOADS"], 'project/'+ project.image))


    return render_template('project/edit_project.html')

Html模板'edit_project.html'如下所示

<div class="container">
    <form method="POST" id="project-form" enctype="multipart/form-data">
        <div class="form-group">
            <input type="text" name="title" class="form-control" id="title" placeholder="Title">
        </div>
        <div class="form-group">
            <input type="text" name="link" class="form-control" id="title" placeholder="Project Link">
        </div>
        <div class="form-group">
            <label for="exampleFormControlTextarea1">Description</label>
            <textarea id = project-form name="description" class="form-control" id="description" rows="3"></textarea>
        </div>
        <div class="input-group" style="width: 30%;">
            <div class="input-group-prepend">
                <span class="input-group-text" id="inputGroupFileAddon01">Upload</span>
            </div>
            <div class="custom-file">
                <input type="file" name="image" class="custom-file-input" id="inputGroupFile01" aria-describedby="inputGroupFileAddon01">
                <label class="custom-file-label" for="inputGroupFile01">Upload image</label>
            </div>
        </div>
        <div class="form-group" style="padding-top: 2rem;">
            <button type="submit" class="btn btn-primary">Publish</button>
        </div>
    </form>
</div>

有没有什么方法可以在不使用 WTForms 的情况下在表单中显示数据,还是我必须改用 WTForms?

提前致谢。

你能使用 jinja 模板吗? render_template() 采用数据参数。您可以将数据从您的数据库传递到该调用并使用 HTML 中的 jinja 模板来呈现它。设置输入值即可。 例如: 你的数据是data = {title:"apple"} 而且,return render_template("project/edit_project.html", data=data) 将在 HTML 文件中为您提供数据对象。 在那里,你可以像这样使用神社:

<div class="form-group">
    <input type="text" name="title" class="form-control" id="title" placeholder="Title" value={{data.text}}>
</div>

希望对您有所帮助!