我正在尝试为我的网站创建一个登录系统。如果用户使用现有帐户创建帐户,数据库将崩溃并发生错误。我的问题是我不知道如何做到这一点,以便它检查该用户名是否已被使用,如果该名称已被使用,则会闪烁一条错误消息。
我不确定在if newUser:
之后要添加什么,我是Flask / Python的新手,所以任何帮助都将大有帮助。
谢谢。
@app.route('/signup', methods=['GET', 'POST'])
def signup():
form = SignupForm()
if form.validate_on_submit():
hashed_password = generate_password_hash(form.password.data, method='sha256')
db.session.add(newUser)
db.session.commit()
return render_template('index..html')
return render_template('signup.html', form=form)
答案 0 :(得分:1)
您需要在创建新用户之前查询数据库:
@app.route('/signup', methods=['GET', 'POST'])
def signup():
form = SignupForm()
if form.validate_on_submit():
hashed_password = generate_password_hash(form.password.data, method='sha256')
user = db.session.query(User).filter_by(username=form.username.data).scalar()
if user:
flash('Please choose another username')
else:
newUser = User(username=form.username.data)
db.session.add(newUser)
db.session.commit()
return render_template('index.html')
return render_template('signup.html', form=form)
查看代码中的这一行:
user = db.session.query(User).filter_by(username=form.username.data).scalar()