Python 使用Flask会话的用户注册功能

Python 使用Flask会话的用户注册功能,python,session,flask,login,Python,Session,Flask,Login,我试图检查我的数据库中是否已经有用户名,然后注册新用户。但是,无论我输入的用户名是否已经注册,它都会在URL中返回到register.html,并带有?username=xxx&password=xxx。我怎样才能解决这个问题 @app.route('/register', methods=['GET', 'POST']) def register(): if request.method == 'POST': reg_username = request.form.ge

我试图检查我的数据库中是否已经有用户名,然后注册新用户。但是,无论我输入的用户名是否已经注册,它都会在URL中返回到
register.html
,并带有
?username=xxx&password=xxx
。我怎样才能解决这个问题

@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        reg_username = request.form.get['username']                                                           
        reg_password = request.form.get['password']                                                   
        # Check if username exists in database                                                                
        query = "SELECT username FROM users WHERE username = :username"
        if db.execute(query, {'username': reg_username}).first():                                                 
            flash('Username already exists')
            return render_template('register.html')                                                           
        else:                                                                                                     
            new_user = User(reg_username, reg_password)
            db.session.add(new_user)
            db.session.commit()
            session['username']=reg_username
            return redirect(url_for('login'))
    return render_template('register.html')
您的代码(if语句块)需要一个
POST
请求,并且看起来您正在发送一个
GET
请求,其中包含
?username=xxx&password=xxx
。将表单的方法更改为
POST
。如果您没有在HTML表单中指定方法,默认情况下它将使用
GET
。 您还需要更正代码,因为Flask中的POST请求不使用
request.form.get()
它们使用
request.form['key\u name']

将代码更改为以下内容,并确保将HTML模板中的表单方法更改为
POST

@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        reg_username = request.form['username']                                                           
        reg_password = request.form['password']                                                   
        # Check if username exists in database                                                                
        query = "SELECT username FROM users WHERE username = :username"
        if db.execute(query, {'username': reg_username}).first():                                                 
            flash('Username already exists')
            return render_template('register.html')                                                           
        else:                                                                                                     
            new_user = User(reg_username, reg_password)
            db.session.add(new_user)
            db.session.commit()
            session['username']=reg_username
            return redirect(url_for('login'))
    return render_template('register.html')
HTML表单的外观示例

<form action="{{url_for('register')}}" method="POST">
     <!––some input-->
</form>


shifloni,谢谢!!我一直在关注Python代码,而我本应该关注我的html和缺少的方法=“POST”。再次感谢。问题解决了。很高兴我能帮忙。你能把我的答案标为接受答案吗?非常感谢。就这么做了。再次感谢。