Я лично предложил бы использовать объект сеанса для передачи данных из одной формы в другую. Если у вас есть небольшой объем данных, вы можете уйти, просто используя реализацию куки-файлов, которые есть в колбе. В противном случае, вы можете переопределить объект сеансов по умолчанию для хранения сеансов сервера данных с помощью Redis. Это позволяет использовать объекты сеанса, не платя цену хранения большого количества данных в файлах cookie. Это означает, что вы можете сделать что-то вроде
@app.route('/form/step1', methods=['GET', 'POST'])
def form_step1():
form1 = form_step_1(request.POST)
user_id = current_user.user_id # If you're using flask-login
...validate()...
# dictionary that holds form1, form2, etch
form_data = {"form1": form1, "form2": None, "Form3"=None}
flask.session[user_id] = form_data
redirct_to(url_for("form_step2"))
return render_template('register.html', {'form':form1})
@app.route('/form/step2', methods=['GET', 'POST'])
def form_step2():
form1 = session[user_id][form1]
# A simpler way than passing the whole form is just the data
# you want but for this answer I'm just specifying the whole form.
form = form_step_2(form1)
user_id = current_user.user_id # If you're using flask-login
...validate()...
# dictionary that holds form1, form2, etch
flask.session[user_id]["form2"] = form2
redirct_to(url_for("form_step3"))
return render_template('register.html', form=form)
Вы никогда не создаете экземпляр поля _game
. Это означает, что всякий раз, когда вы пытаетесь получить доступ к одному из базовых членов, вы получаете NullPointerException
. Вы должны убедиться, что _game
присвоен экземпляру Game
, прежде чем пытаться обратиться к нему.
См. этот пост для получения дополнительной информации о NullPointerException
с