Проблема со связыванием форм с использованием Flask и WTForms - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь настроить веб-приложение, которое запускает методы на основе пользовательского ввода. Первая страница берет изображение и количество изображений и запускает метод с ними, затем пользователь отправляется на следующую форму, которая представляет собой кнопку подтверждения, подтверждающую, что они выполнили задачу за пределами приложения. Однако при нажатии кнопки подтверждения пользователь перенаправляется на первую страницу, где показано, что они необходимы для ввода информации в форму, даже если она была ранее заполнена

@app.route("/", methods=['GET', 'POST'])
def Home():
    form = SelectImageForm()
    if form.validate_on_submit():
        Label_Required = form.ImageLabel.data
        Amount_Required = form.Amount.data
        Cloud_Transfer(form.ImageLabel.data, form.Amount.data)
        flash(f'Searching Labels for {form.ImageLabel.data}!', 'success')
        form = SelectXMLConversion()
        return Stage2()
    return render_template('home.html', title = 'Label Selection', form=form )

@app.route('/stage2', methods=['GET','POST'])
def Stage2():
    form =  SelectXMLConversion()
    if form.validate_on_submit():
        return render_template('stage2.html', title ='Label Selection', form=form)


if __name__ == '__main__':
    app.run(debug='true')

В настоящее время ожидается, что он просто перезагрузит страницу стадии 2, однако он отправляет их обратно на первую страницу, предлагая заполнить обязательные поля

1 Ответ

0 голосов
/ 18 января 2019

Вместо return Stage2() вместо:

from flask import redirect, url_for

def home():
form = SelectImageForm()
if form.validate_on_submit():
    Label_Required = form.ImageLabel.data
    Amount_Required = form.Amount.data
    Cloud_Transfer(form.ImageLabel.data, form.Amount.data)
    flash(f'Searching Labels for {form.ImageLabel.data}!', 'success')
    form = SelectXMLConversion()
    return redirect(url_for('stage2'))
return render_template('home.html', title = 'Label Selection', form=form )

Кроме того, определения маршрута должны быть функциями, которые должны быть в нижнем регистре, например def home() и def stage2().Я считаю, что label_required и amount_required также должны быть переменными, которые также должны быть в нижнем регистре.Возможно, вы захотите проверить соглашения о присвоении имен в Python .

Наконец, как и все, маршрут stage2() не будет выполнен.Вы не вернете шаблон, если форма не подтверждена.Предположительно, вы хотите, чтобы люди сначала заполнили форму на этом маршруте, и в этом случае вы должны иметь return вне этого if form.validate_on_submit(): условия.

...