Flask,有表单更新雪花表而不刷新页面

时间:2021-07-23 17:37:59

标签: python flask

我有一个简单的 Flask 应用程序,它显示一个包含来自 Snowflake 的数据的表格。在同一页面上,我还有一个表单,让用户能够在此表中添加/插入行。

本质上,当提交表单时,会在 Snowflake 表中创建一条新记录。一切正常,但每次提交表单时都会刷新页面。

如果每次提交表单时都不刷新页面,我该怎么办?仍然显示更新的记录。我假设某种 Ajax 实现,但不确定从哪里开始。


app.py

@app.route("/",  methods=["GET", "POST"])
def website_with_table_and_form():
    
    df = <DF SOURCE HERE>

    #get data points from form
    mhh_key = request.form.get('mhh_key')
    mhh_name = request.form.get('mhh_name')
    curr_initial = request.form.get('curr_initial')
    reassigned_initial = request.form.get('reassigned_initial')
    reassignment_request_date = str(datetime.now())
    insert_reassignment_sql = text('insert into "#####"."#####"."####" ("MHH_KEY", "MHH_NAME","CURR_INITIAL", "REQUESTED_INITIAL" ,"REQUESTED_DT" ) select :p_mmh_key, :p_mhh_name, :p_curr_init, :p_req_init, :p_requested_dt')


        engine = create_engine(URL(
        account = '######',
        user = '######',
        authenticator = '######',
        database = '######',
        schema = '######',
        warehouse = '######',
        role='######',
    ))
    
    connection = engine.connect()
    
    connection.execute(insert_reassignment_sql, p_mmh_key = mhh_key, p_mhh_name = mhh_name, p_curr_init = curr_initial, p_req_init = reassigned_initial, p_requested_dt = reassignment_request_date )
    


    connection.close()
    engine.dispose()

return render_template('index.html', column_names=df.columns.values, row_data=list(df.values.tolist()) )


index.html


   <form method="POST">
                <input type="hidden" name="mhh_key" value="{{ row[8] }}"></input>
                <input type="hidden" name="mhh_name" value="{{ row[0] }}"></input>
                <input type="hidden" name="curr_initial" value="{{ row[10] }}"></input>
                <input type="text" name="reassigned_initial" id="reassigned_init" value="{{ row_ }}" size="3" maxlength="140"/>
                <input type="hidden" name="reassignment_dt" value="{{ reassignment_request_date }}"></input>
                <input type="submit" class="btn btn-success" value="Reassign"/>
                </form>



0 个答案:

没有答案
相关问题