Rad*_*adu 5 python mysql post flask
我想在我的网站上有一个页面,其中有多个按钮可以发送不同的 POST 请求来修改我的数据库的某些部分。
目前,只有顶部的 if 语句被执行。如果我尝试下面的两个,我得到:浏览器(或代理)发送了一个该服务器无法理解的请求。
如果我切换它们,它总是最上面的 if 语句被执行。
我这样做错了吗?有没有更好的方法来做这种事情?
@app.route('/', methods=["GET", "POST"])
@login_required
def homepage():
if request.method == "POST" and request.form['estimatedCost']:
_projectName = request.form['projectName']
_estimatedCost = request.form['estimatedCost']
_amountAllocated = request.form['amountAllocated']
conn, cursor = connectDB()
cursor.execute("INSERT INTO `project` (`name`, `estimatedCost`, `amountAllocated`, `pStatus`, `actualCost`, `estimatedDuration`, `actualDuration`, `costDifference`) VALUES ( '" + _projectName + "', '" + _estimatedCost + "', '" + _amountAllocated + "', 'NOT STARTED', 0, 0, 0, NULL)")
conn.commit()
conn.close()
return redirect('/')
if request.method == "POST" and request.form['delete']:
_delete = request.form['delete']
conn, cursor = connectDB()
cursor.execute("DELETE FROM project WHERE name = '" + _delete + "'")
conn.commit()
conn.close()
return redirect('/')
if request.method == "POST" and request.form['pid']:
_pid = request.form['pid']
_status = request.form['status']
conn, cursor = connectDB()
cursor.execute("UPDATE project SET pStatus = '" + _status + "' WHERE name = '" + _pid + "'")
conn.commit()
conn.close()
return redirect('/')
conn, cursor = connectDB()
cursor.execute("SELECT * FROM project")
projects = cursor.fetchall()
conn.close()
return render_template("dashboard.html", projectDic = projects)
Run Code Online (Sandbox Code Playgroud)
我设法为我的问题找到了解决方案。
因为request.form['key']如果它不存在就会导致错误,而不是仅仅变成 False,它使页面崩溃。
相反,我过去常常"key" in request.form检查该输入是否已填写在表单中。
这是更正后的代码:
@app.route('/', methods=["GET", "POST"])
@login_required
def homepage():
if request.method == "POST" and "estimatedCost" in request.form:
_projectName = request.form['projectName']
_estimatedCost = request.form['estimatedCost']
_amountAllocated = request.form['amountAllocated']
conn, cursor = connectDB()
cursor.execute("INSERT INTO `project` (`name`, `estimatedCost`, `amountAllocated`, `pStatus`, `actualCost`, `estimatedDuration`, `actualDuration`, `costDifference`) VALUES ( '" + _projectName + "', '" + _estimatedCost + "', '" + _amountAllocated + "', 'NOT STARTED', 0, 0, 0, NULL)")
conn.commit()
conn.close()
return redirect('/')
if request.method == "POST" and "delete" in request.form:
_delete = request.form['delete']
conn, cursor = connectDB()
cursor.execute("DELETE FROM project WHERE name = '" + _delete + "'")
conn.commit()
conn.close()
return redirect('/')
if request.method == "POST" and "pid" in request.form:
_pid = request.form['pid']
_status = request.form['status']
conn, cursor = connectDB()
cursor.execute("UPDATE project SET pStatus = '" + _status + "' WHERE name = '" + _pid + "'")
conn.commit()
conn.close()
return redirect('/')
conn, cursor = connectDB()
cursor.execute("SELECT * FROM project")
projects = cursor.fetchall()
conn.close()
return render_template("dashboard.html", projectDic = projects)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3100 次 |
| 最近记录: |