Найти - Пользователи
Полная версия: Flask: передача значений формы на другую страницу для обработки
Начало » Web » Flask: передача значений формы на другую страницу для обработки
1
Razor
Добрый день, коллеги.

Хочу на сайте организовать двух-шаговую регистрацию. Смысл понятен всем - видя меньше количество полей пользователь охотнее регистрируется. Сейчас все организовал так, как опишу ниже, но я не могу передать данные формы со страницы регистрации 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>
sander
Razor
вот это передаст словать values в виде строки
url_for('.register_step2', values=values)
нужно делать
url_for('.register_step2', **values)
и потом получать эти значения из request.args
Razor
sander
и потом получать эти значения из request.args
request.args почему то пустой. Я пробовал передавать данные через саму форму, путем задание action в первой форме, но получить эти данные я не успеваю, так как на второй странице тоже есть форма, которая затирает эти данные.
sander
Razor
можно получить данные из request.form, не передавая их в форму
ayb
Мне кажется лучше всего промежуточные данные хранить где-нибудь в локальном хранилище браузера или в in-memory базе на сервере ( редис, мемкэшд )
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB