添加methods=["POST", "GET"]
的重要组成部分时,我的代码显示错误:
Line 127, in PatientDashboard
""".format(Data[0][0]))
IndexError: list index out of range
我了解此错误通常意味着什么,但我不了解添加方法如何影响列表的大小。
@app.route("/PatientDashboard.html", methods=["GET", "POST"])
def PatientDashboard():
Username = (request.args.get("Username"))
Connection = sqlite3.connect(DB)
Cursor = Connection.cursor()
Data = Cursor.execute("""
SELECT *
FROM PatientTable
WHERE Username = '{}'
""".format(Username))
Data = Data.fetchall()
AllAppointments = Cursor.execute("""
SELECT Title, Firstname, Surname, TimeSlot, Date, Status
FROM AppointmentTable
INNER JOIN DoctorTable ON AppointmentTable.DoctorID = DoctorTable.DoctorID
WHERE PatientID = '{}'
""".format(Data[0][0]))
AllAppointments = AllAppointments.fetchall()
SQL语句运行完美(数据库不为空),并且在第一个SQL语句之后添加print(Data)
时,将输出嵌套列表。
我通过查看关于stackoverflow的其他各种问题尝试了故障排除,但是没有运气。
非常感谢您。
编辑1:
Username = (request.args.get("Username"))
print("Username: ", Username)
给出正确的输出,例如Username: nx_prv
,但使用POST请求后,输出将变为Username: None
。
编辑2:
我设法使用flask.sessions
解决了这个问题。问题是request.args.get("Username")
每次都被“重置”。
答案 0 :(得分:0)
我设想的场景:使用GET方法测试了路由(因为没有Vital="yes"
参数),一切都很好。添加了methods
参数,以便可以测试POST,并且它“停止工作”。但是它确实并没有停止工作,只是没有处理POST请求而已。
来自flask doc on request object的两个显着属性是:
表格
具有从POST或PUT请求中解析的表单数据的MultiDict。请记住,文件上传不会在这里结束,但是 而是在files属性中。
参数
具有查询字符串的解析内容的MultiDict。 (URL中问号后的部分。)
因此GET请求将“填充” methods
,而POST请求将args
填充。 POST请求中此行form
的用户名将是None
。
您可以通过询问请求对象的method属性来确定哪种方法。
方法
当前请求方法(POST,GET等)