将flask-sqlalchemy存储在请求列表中

时间:2018-01-26 07:04:34

标签: jquery python ajax sqlalchemy flask-sqlalchemy

我对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)

如果需要,我会发布任何其他代码。感谢。

0 个答案:

没有答案