如何将数据库中的数据发送到 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>
希望对您有所帮助!
我正在尝试将数据从数据库发送到 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>
希望对您有所帮助!