Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » Flask: передача значений формы на другую страницу для обработки [RSS Feed]

#1 Июль 23, 2015 07:27:14

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Flask: передача значений формы на другую страницу для обработки

Добрый день, коллеги.

Хочу на сайте организовать двух-шаговую регистрацию. Смысл понятен всем - видя меньше количество полей пользователь охотнее регистрируется. Сейчас все организовал так, как опишу ниже, но я не могу передать данные формы со страницы регистрации 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)

register1.html (форма 1)
<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>

register2.html (форма 2)
<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)

Офлайн

#2 Июль 23, 2015 09:37:44

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Flask: передача значений формы на другую страницу для обработки

Razor
вот это передаст словать values в виде строки

url_for('.register_step2', values=values)
нужно делать
url_for('.register_step2', **values)
и потом получать эти значения из request.args

Офлайн

#3 Июль 23, 2015 10:00:51

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Flask: передача значений формы на другую страницу для обработки

sander
и потом получать эти значения из request.args
request.args почему то пустой. Я пробовал передавать данные через саму форму, путем задание action в первой форме, но получить эти данные я не успеваю, так как на второй странице тоже есть форма, которая затирает эти данные.

Офлайн

#4 Июль 23, 2015 10:44:06

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Flask: передача значений формы на другую страницу для обработки

Razor
можно получить данные из request.form, не передавая их в форму

Офлайн

#5 Июль 24, 2015 08:36:36

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Flask: передача значений формы на другую страницу для обработки

Мне кажется лучше всего промежуточные данные хранить где-нибудь в локальном хранилище браузера или в in-memory базе на сервере ( редис, мемкэшд )

Офлайн

  • Начало
  • » Web
  • » Flask: передача значений формы на другую страницу для обработки[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version