Можно например так
return redirect(url_for('.register_step2',
first_name=form.first_name.data,
age= form.gender.data,
gender=form.gender.data,
search_gender=form.search_gender.data
))
И потом разбирать аргументы через request.form.args
Еще можно прямо на этом этапе создать пользователя и в финальный экран регистрации передавать id незарегистрированного пользователя
Мне кстати не совсем понятно, что за интересный вызовы flask-wtf
@mod.route('/welcome/1', methods=['GET', 'POST'])
def register_step1():
form = RegisterForm1()
if form.validate_on_submit():
'''
Что-то делаем
'''
return redirect(url_for('.register_step2', values=values))
'''
else:
return "No validate: {0}".format(dict(request.form))
Эта часть не нужна так-как form-errors на строне шаблонов можно отрабатывать
'''
return render_template('register1.html', form=form)
Еще можно сделать все в одну форму и просто js'ом разбить форму на два экрана. Без магии.
Бонус:
<form method="POST" action="{{url_for('mod.register_step1')}}" enctype="multipart/form-data">