Как получить данные из input и перенести их в код Flask?
Мне нужно получить данные из поля input в HTML в код Flask для дальнейшей работы с ними. Я подключил модуль request, но получить данные все равно не удается. На странице ошибка 400 Bad Request. Можно ли ее как-то решить?
HTML-код:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="{{url_for('static', filename='css/reg_style.css')}}" />
<title>Регистрация</title>
</head>
<body>
<h1>Регистрация</h1>
<form method="POST">
<input class="name" name="name" placeholder="Введите ваше имя">
<input class="email" name="email" placeholder="Введите ваш e-mail">
<input class="pass" name="pass" placeholder="Придумайте пароль" type="password">
<input class="pass_again" placeholder="Повторите пароль" type="password">
<a href="http://127.0.0.1:8080/reg_run">
<div class="button"><div class="text_button">Зарегистрироваться</div></div>
</a>
</form>
<div class="log">Войти</div>
<div class="restore">Восстановить пароль</div>
</body>
</html>
Flask-код:
@app.route('/reg', methods=['POST', 'GET'])
def reg():
return render_template("reg.html")
@app.route('/reg_run', methods=['POST', 'GET'])
def reg_run():
a = request.form['name']
print(a)
return a
Ответы (1 шт):
Скажите, пожалуйста, это вот так вы хотите отправить форму?
<a href="http://127.0.0.1:8080/reg_run">
<div class="button"><div class="text_button">Зарегистрироваться</div></div>
</a>
Подтяните, пожалуйста, основы HTML. Это просто ссылка, которая генерирует GET-запрос по указанному URL. Ну а результат предсказуемый, в обработчик не присылается вообще ничего, он падает с ошибкой и возвращает код 400.
Должно сработать вот так:
<form method="POST" action="/reg_run">
<input class="name" name="name" placeholder="Введите ваше имя" />
<input class="email" name="email" placeholder="Введите ваш e-mail" />
<input class="pass" name="pass" placeholder="Придумайте пароль" type="password" />
<input class="pass_again" placeholder="Повторите пароль" type="password" />
<input type="submit" value="Зарегистрироваться" />
</form>
В этом случае действительно будет отправляться POST-запрос с телом, в котором будут поля формы, которые потом можно будет получить и обработать.
И не забывайте закрывать тэги, косая черта обязательно нужна, даже если и без нее как бы работает.
Очень полезная ссылка: