一周学会Flask3 Python Web开发-SQLAlchemy更新数据操作-班级模块
锋哥原创的Flask3 Python Web开发 Flask3视频教程:
2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili
list.html页面,加一个更新操作超链接:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>班级列表</title>
</head>
<body>
<h3>班级列表</h3>
<a href="/grade/add">添加</a><br/>
编号 , 班级名称 , 备注 ,操作<br/>
{% for grade in gradeList %}
{{ grade.id }} , {{ grade.name }} , {{ grade.remark }} , <a href="/grade/update?id={{ grade.id }}">修改</a><br/>
{% endfor %}
</body>
</html>
更新操作,首先GradeForm里面加下id字段,HiddenField类型,是隐藏域。
class GradeForm(FlaskForm):
id = HiddenField()
name = StringField('班级名称', render_kw={'placeholder': '请输入班级名称'},
validators=[DataRequired()])
remark = TextAreaField('备注', render_kw={'placeholder': '请输入班级备注'})
submit = SubmitField("登录")
新建update.html页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>修改页面</title>
</head>
<body>
<form action="update" method="post">
<table>
{{ form.csrf_token }}
<tr>
<td>{{ form.name.label }}:</td>
<td>{{ form.name }}</td>
</tr>
<tr>
<td valign="top">{{ form.remark.label }}:</td>
<td>{{ form.remark }}</td>
</tr>
<tr>
<td>
{{ form.submit }}
</td>
<td>
{{ form.id }}
</td>
</tr>
</table>
</form>
</body>
</html>
grade.py里面新建一个update()视图:先通过query对象的get方法,根据id获取班级对象,然后修改对象属性,最后commit提交即可。
@grade_bp.route('/update', methods=['GET', 'POST'])
def update():
gradeForm = GradeForm()
if request.method == 'GET':
id = request.args.get('id', type=int)
grade = GradeModel.query.get(id)
gradeForm.id.data = grade.id
gradeForm.name.data = grade.name
gradeForm.remark.data = grade.remark
return render_template('grade/update.html', form=gradeForm)
else:
if gradeForm.validate():
data = gradeForm.data
print('data:', data)
print(data['id'])
grade = GradeModel.query.get(data['id'])
grade.name = data['name']
grade.remark = data['remark']
db.session.commit()
return index()
最后测试下: