我正在开发一个用户注册系统,一旦点击“注册”,网站就会显示两个表单:第一个表单是一个典型的用户创建表单,其中包含用户名、密码等,第二个表单是一个包含个人信息的表单,如年龄、生日等
因为用户可能会在完成个人资料(个人信息)之前离开,所以我不想实际创建用户,即添加用户名/密码信息。直到两个表单都提交。你知道吗
有一个以第一个表单(User
)创建的register()
类的实例需要添加到数据库中,但是这个实例是在提交第一个表单之后创建的。你知道吗
所以,我的问题是,有没有办法把变量从第一页传递到下一页?你知道吗
代码如下:
@app.route("/profile-creation/<username>", methods = ['GET', 'POST'])
def profile_creation(username):
form = ProfileForm()
if form.validate_on_submit():
# I would like to use the class "user" created in register() here.
# The user class would be added and commited to a SQLite database.
flash(f'You have successfully created your account!', 'success')
return redirect(url_for('homepage'))
return render_template('profile-creation.html', title = "Create Your Profile", form = form)
@app.route("/register", methods = ['GET', 'POST'])
def register():
form = RegistrationForm()
if form.validate_on_submit():
hashed_password = bcrypt.generate_password_hash(form.password.data).decode('utf-8')
user = User(username = form.username.data, first_name = form.first_name.data, last_name = form.last_name.data,
email = form.email.data, password = hashed_password)
username = user.username
flash(f'Please set up your profile to create your account.', 'success')
return redirect(url_for('profile_creation', username = username))
return render_template('register.html', title = 'Register', form = form)
本质上,如何将在register()
中创建的user
实例传递到profile_page(username)
?我听说有一种方法可以使用session变量来实现这一点,但是应该尽可能避免使用这些变量。有没有办法不用它?非常感谢。你知道吗
您可以将初始
/register
中的原始用户名/密码存储在flask.session
。然后,当用户完成其余的设置时,/profile-creation
,可以将接收到的完整输入提交到数据库:flask.session
存储在flask
内置服务器运行期间在整个应用程序中传递的任何值。你知道吗相关问题 更多 >
编程相关推荐