Python 使用Flask会话的用户注册功能
我试图检查我的数据库中是否已经有用户名,然后注册新用户。但是,无论我输入的用户名是否已经注册,它都会在URL中返回到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
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”。再次感谢。问题解决了。很高兴我能帮忙。你能把我的答案标为接受答案吗?非常感谢。就这么做了。再次感谢。