У меня есть форма с 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'






Проблема в том, что браузер хранит состояние последнего запроса, поэтому, если вы обновите страницу в этот момент, браузер повторно отправит форму.
После обработки успешного запроса формы перенаправьте на страницу, чтобы получить новое состояние.
что-то вроде кода ниже
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'
Используете ли вы ajax/jquery. Это также может быть вариант, когда ввод формы очищается сразу после отправки через ajax. Последующая отправка завершится ошибкой, если вы проверили форму на пустоту.
Большое спасибо @Nancy, у меня тоже были некоторые проблемы с отправкой формы из-за того, что я забыл redirect после того, как функция была выполнена.
Вот почему перенаправление на стороне сервера после успешной отправки формы является нормальной практикой. См. здесь