sqlite 我的HTML没有将POST方法发送到flask应用程序函数

7gcisfzg  于 2023-04-12  发布在  SQLite
关注(0)|答案(1)|浏览(176)

1.##发生了什么:
我有一个HTML代码,它向flask代码发送POST请求。这是一个登录页面。(我使用SQLite3和Flask。)
1.##HTML代码:

<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>

1.##Python代码:

@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'))

没有traceback,这(可能)意味着函数甚至没有被调用。

pxy2qtax

pxy2qtax1#

我没有使用过Flask,但使用过Django。
我看到你有一个<a>标记,带有href="{{url_for('register_post')}}",为什么你试图重定向到'https://example.com/register'?通过重定向,你正在发出GET请求,而你的register_post函数只处理POST方法。
你用method="post"action="{{url_for('register_post')}}"描述了<form>,这意味着只要有人提交表单,该函数就可以工作,但现在,当你专注于表单的任何输入时,点击'enter'键就可以了。另一种方法是添加<button type="submit">yout text</button><input type="submit" value="your text" />而不是<a id="submit">标签。
HTML中只有两种HTTP请求方法,即POSTGET

  • GET请求发生在您通过URL导航或提交带有method="GET"的表单时,method="GET"是默认的,您不必指定它。
  • POST方法发生在某人提交一个描述了POST方法的表单时。

如果你想访问任何其他HTTP请求类型的PUT,DELETE,HEAD,OPTIONS,PATCH,那么你需要JavaScript。

相关问题