我有一个简单的 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>