我对python中的对象相当新。我正在使用烧瓶进行网页开发。 App的流程如下:
动态选项在表单中生成,每个选项都有一组相同的问题,并通过ajax提交,因此在所有选项都结束之前不会重新加载页面。 url也是动态生成的。
我遇到的问题是每个ajax表单提交都提交给数据库,如果用户关闭窗口,数据仍然在数据库中。 有没有办法存储插入查询,直到所有选项都完成。 我会发布相关代码。
链接生成代码
@expose('/_generatelink',methods=['GET'])
@requires_roles('admin')
def genlink(self):
if request.method == "GET":
stream_name=request.args.get('b',0,type=int)
semester_name=request.args.get('a',0,type=int)
# print(stream_name)
print(request.script_root)
url=url_for('question.display_question',hashid=create_hashid(stream_name),semester=create_hashid(semester_name))
print(url)
return jsonify(d=url)
数据库插入
if request.method == "POST":
#datasub=Submissions()
dictv =request.form.to_dict()
print(dictv)
dictv.pop('csrf_token')
print("debug")
print(dictv)
d={key[-1:]:dictv[key] for key in dictv if key.startswith('options')}
if d is None:
abort(405)
stream=decode_hashid(dictv["stream_id"])
print(dictv["stream_id"])
(stream,)=stream
try:
for key,value in d.items():
datasub=Submissions()
datasub.form_id=dictv["form_id"]
datasub.user_id=int(dictv["teacher_select"])
datasub.subject_id=int(dictv["subject_data"])
datasub.stream_id=int(stream)
datasub.question_id=int(key)
datasub.submission=int(value)
if key == "1":
datasub.suggestions=dictv["suggestions"]
db.session.add(datasub)
db.session.commit()
except Exception:
db.session.rollback();
# print(dictv)
print("success")
jsondata=[{'type':'success','message':'success'}]
return jsonify(jsondata)
如果需要,我会发布任何其他代码。感谢。