Это потому, что, когда вы вводите номер, нажмите «Ввод», input.nextInt()
потребляет только номер, а не «конец строки». Когда input.nextLine()
выполняется, он потребляет «конец строки» все еще в буфере с первого входа.
Вместо этого используйте input.nextLine()
сразу после input.nextInt()
Проблема в том, что вы всегда визуализируете форму с любыми данными, которые были переданы, даже если эти данные были проверены и были обработаны. Кроме того, браузер сохраняет состояние последнего запроса, поэтому, если вы обновите страницу в этот момент, браузер повторно отправит форму.
После обработки успешного запроса формы переадресуйте страницу на получить новое состояние.
@app.route('/register', methods=['GET', 'POST'])
def register():
form = RegistrationForm()
if form.validate_on_submit():
# do stuff with valid form
# then redirect to "end" the form
return redirect(url_for('register'))
# initial get or form didn't validate
return render_template('register.html', form=form)