html - 如何在 Flask 中将数据从数据库发送到 html 表单进行编辑
问题描述
我正在尝试将数据从数据库发送到 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 文件中为您提供数据对象。在那里,您可以像这样使用 jinja:
<div class="form-group">
<input type="text" name="title" class="form-control" id="title" placeholder="Title" value={{data.text}}>
</div>
希望能帮助到你!
推荐阅读
- maven - Gitlab无法清除maven项目的缓存
- javascript - 我无法更改输入值反应 v0.14
- flutter - Image.file() 加载太慢
- c++ - 如何将派生类的对象存储在可以访问基类没有的属性的数据结构中?
- basic4android - 如何使用 basic4android 发布有效载荷
- regex - 如何检查 Pyspark 中列的日期格式
- qt - 当我在 Qt 中调整窗口大小时,程序在 QLabel::setPixmap() 崩溃
- node.js - 仅在当天第一次触发 AWS-Lambda 函数时调用它
- python - 使用结构差异进行 Yaml 比较
- python - 如何解决错误字符串索引在文本扩展中必须是整数