首页 > 解决方案 > 在页面刷新时停止表单提交

问题描述

我有一个带有 Flask/Python/Html 的表格

提交表单后,它会被路由到另一个页面,在该页面上会给出确认,例如“表单提交成功!”

但是,如果我刷新页面,它将再次提交内容,因此我可能最终会得到重复的数据。

有没有办法防止这种情况?

HTML

<form action="{{ url_for('submitForm') }}" method="post">
<input name='user_input'>
<button type='submit'>Submit</button>
</form>

蟒蛇/烧瓶

app.route('/submitForm', methods=['POST'])
def submitForm():
    data = request.form['user_input']
    some_list.append(data)
    return 'Form submitted'

标签: pythonhtmlflask

解决方案


问题是浏览器存储了最后一个请求的状态,因此如果此时刷新页面,浏览器将重新提交表单。

处理成功的表单请求后,重定向到页面以获取新状态。

类似于下面的代码

return redirect(url_for('submitForm'))

因此

app.route('/submitForm', methods=['POST'])
def submitForm():
    data = request.form['user_input']
    some_list.append(data)

    print('data submitted successfuly')
    return redirect(url_for('submitForm'))
    return 'Form submitted'

推荐阅读