Форум сайта python.su
Добрый день, коллеги.
Хочу на сайте организовать двух-шаговую регистрацию. Смысл понятен всем - видя меньше количество полей пользователь охотнее регистрируется. Сейчас все организовал так, как опишу ниже, но я не могу передать данные формы со страницы регистрации 1 на страницу регистрации 2 для обработки формы.
views.py
@mod.route('/welcome/1', methods=['GET', 'POST']) def register_step1(): form = RegisterForm1(request.form) if request.method == 'POST': if form.validate(): values = {'first_name': form.first_name.data, 'age': form.age.data, 'gender': form.gender.data, 'search_gender': form.search_gender.data} return redirect(url_for('.register_step2', values=values)) else: return "No validate: {0}".format(dict(request.form)) return render_template('register1.html', form=form) @mod.route('/welcome/2', methods=['GET', 'POST']) def register_step2(values): form = RegisterForm2(request.form) if request.method == 'POST': dic = { 'values': values, } return Response(json_util.dumps(dic), mimetype='application/json') return render_template('register2.html', form=form)
<form method="POST" action="/welcome/1" enctype="multipart/form-data"> {{ form.csrf_token }} <table> {% for field in form %} <tr> <td>{{ field.label }}</td> <td>{{ field }}</td> </tr> {% endfor %} </table> <input type=submit value="To Step 2"> </form>
<form method="POST" action="/welcome/2" enctype="multipart/form-data"> {{ form.csrf_token }} <table> {% for field in form %} <tr> <td>{{ field }}</td><td>{{ field.label }}</td> </tr> {% endfor %} </table> <input type=submit value="Registration"> </form>
Отредактировано Razor (Июль 23, 2015 07:29:52)
Офлайн
Razor
вот это передаст словать values в виде строки
url_for('.register_step2', values=values)
url_for('.register_step2', **values)
Офлайн
sanderrequest.args почему то пустой. Я пробовал передавать данные через саму форму, путем задание action в первой форме, но получить эти данные я не успеваю, так как на второй странице тоже есть форма, которая затирает эти данные.
и потом получать эти значения из request.args
Офлайн
Razor
можно получить данные из request.form, не передавая их в форму
Офлайн
Мне кажется лучше всего промежуточные данные хранить где-нибудь в локальном хранилище браузера или в in-memory базе на сервере ( редис, мемкэшд )
Офлайн