【发布时间】:2021-12-19 05:53:06
【问题描述】:
我正在使用烧瓶和 sqlalchemy 进行 CRUD 操作。有两个输入字段。
- 主题和 2) 描述和添加按钮。用户输入值并将其添加到数据库(sqlite3)。幸运的是,这是有效的。甚至删除也有效。
但更新行不起作用。
我正在附上我的 Flask 代码。
@app.route('/update/<id>/', methods = ['GET','POST'])
def update(id):
subj = ''
descr = ''
print("outside the if condition")
if request.method == 'POST' and 'subb' and 'dess' in request.form:
print("inside the if condition")
subj = request.form.get('sub')
print(subj)
descr = request.form.get('desc')
entry = Crud(subject = subj, description = descr)
db.session.add(entry)
db.session.commit()
searchThisId = Crud.query.get(id)
return render_template("update.html",searchThisId = searchThisId)
HTML
{% extends 'base.html' %}
{% block title %} Update the details {% endblock %}
{% block contents %}
<div>
<form method = 'POST', action = '/'>
<input type = "text" name = "subb" value = {{ searchThisId.subject }}><br>
<input type = "text" name = "dess" value = {{ searchThisId.description }}><br>
<input type = "submit" value = "UPDATE">
</form>
</div>
{% endblock %}
【问题讨论】:
-
我认为你的问题在这里:如果 request.method == 'POST' and 'subb' and 'dess' in request.form: 你正在尝试测试“if request.方法是 post,“dess”和“subb”都是名为 request.form 的字典中的键,对吗?那不是该声明所写的那样。
-
dess & subb 来自 HTML 表单 ```
``` 检查输入标签内的“名称”@MattBlaha -
对,但是烧瓶将它们作为字典呈现在 request.form 中?你可以调用 request.form.keys() 吗?我很确定我下面的答案会奏效。
-
@MattBlaha 尝试了您的代码。但它仍然没有进入“if 条件”。
-
这正是您正在运行的代码吗?我注意到一件事可能会给您带来其他问题:有时您将“描述”称为“desc”而其他人称为“dess”,它在您运行的代码中是否一致?
标签: python sqlite flask flask-sqlalchemy