У меня есть код HTML, который отправляет запрос POST в код фляги. Это для страницы входа. (Я использую SQLite3 и Flask.)
<div class = "col">
<div class = "login-box">
<h2>Register</h2>
<form method = "post" action = "{{ url_for('register_post') }}">
<div class = "user-box">
<input type = "email" name = "email" placeholder = "Email Address" required>
</div>
<div class = "user-box">
<input type = "password" name = "password" placeholder = "Password" required>
</div>
<div class = "user-box">
<input type = "text" name = "username" placeholder = "Username" required>
</div>
<div class = "button-form">
<a id = "submit" href = "{{url_for('register_post')}}">Submit</a>
<div id = "register">
Already Have An Account ?
<a href = "{{url_for('login')}}">Login Now !</a>
</div>
</div>
</form>
</div>
</div>
@app.route('/register', methods=['POST'])
def register_post():
print("Got a data")
username = request.form['username']
email = request.form['email']
password = request.form['password']
c.execute('''INSERT INTO users (email, username, password) VALUES (?,?,?)''', (email, username, password))
conn.commit()
conn.close()
return redirect(url_for('login'))
согласованный. submit
должен состоять из type='submit'
и входного тега
У вас есть id = "submit"
, а не type = "submit"
Я не работал с Flask, но работал с Django.
Я вижу, у вас есть тег <a>
с href = "{{url_for('register_post')}}"
, почему вы пытаетесь перенаправить на «https://example.com/register»? Перенаправляя, вы делаете GET
запрос, тогда как ваша register_post
функция обрабатывает только POST
метод.
Вы описали <form>
с помощью method = "post"
и action = "{{url_for('register_post')}}"
, это означает, что функция будет работать всякий раз, когда кто-то отправляет форму, но на данный момент это возможно, когда вы нажимаете клавишу «ввод», когда вы фокусируетесь на любом вводе формы. Другой способ сделать это — добавить тег <button type = "submit">yout text</button>
или <input type = "submit" value = "your text" />
вместо тега <a id = "submit">
.
Существует только два метода HTTP
Запроса в HTML
: POST
и GET
.
GET
запрос возникает, когда вы перемещаетесь по URL-адресу или отправляете форму с method = "GET"
, который используется по умолчанию, и вам не нужно его указывать.POST
метод возникает, когда кто-то ОТПРАВЛЯЕТ ФОРМУ с описанным методом POST.Если вы хотите получить доступ к любым другим типам HTTP-запросов PUT, DELETE, HEAD, OPTIONS, PATCH, вам понадобится JavaScript.
Вы не хотите использовать
a
для ссылки на страницу регистрации. Вам нужен элементbutton
типаsubmit
. И не нужноhref
.action
вform
указывает, куда отправляется форма. На самом деле я никогда не делал того, что вы здесь делаете, но я предполагаю, чтоa
nchor перемещается, а не запускает отправку.