Я работаю в системе регистрации пользователей, в которой после нажатия кнопки «Зарегистрироваться» на сайте представлены 2 формы: первая форма представляет собой типичную форму создания пользователя с именем пользователя, паролем и т. Д., А вторая форма представляет собой форму сличная информация, например, возраст, день рождения и т. д.
Поскольку пользователь потенциально может покинуть свой аккаунт до завершения своего профиля (личная информация), я не хочу на самом деле создавать пользователя, то есть добавлять информацию об имени пользователя / пароле,в базу данных, пока обе формы не будут отправлены.
Существует экземпляр класса 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)
По сути, как передать экземпляр user
, созданный в register()
, на profile_page(username)
?Я слышал, что есть способ сделать это с помощью переменной сеанса, но, предположительно, вы должны избегать этого в максимально возможной степени.Есть ли способ сделать это без этого?Спасибо.