Flask редирект с использованием url_for с параметром - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь перенаправить функцию на себя, но меняю значение параметра.

Это мой код:

@app.route('/', methods=["GET", "POST"])
def index(save=False):
    form = FormFields()
    if form.validate_on_submit:
        csv = Csv(form)
        csv.savecsv()
        return redirect(url_for('index', save=True))
    else:
        print(form.errors)
    return render_template('form.html', form=form, save=save)

Я бы хотел, чтобы при перенаправлении, save переменная будет True, но это всегда False.

В коде формы у меня есть это:

{% if save %}
    <script type="text/javascript"> alert("Saved!");</script>
{% endif %}

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Я нашел альтернативное решение

Я изменил его:

return redirect(url_for('index', save=True))

для этого

return render_template('form.html', form=form, save=True)

Это сделает новый рендер

и я добавил это в форме. html код

$(document).ready(function() {
    $('input').val("");
});

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

но если кому-то действительно нужен return redirect url_for, можно без проблем использовать решение Суман Нирулы

0 голосов
/ 27 февраля 2020

Использовать значения по умолчанию в маршруте:

    @app.route('/', methods=["GET", "POST"], defaults={'save': False})
    @app.route('/<save>', methods=["GET", "POST"])
    def index(save):
        form = FormFields()
        if form.validate_on_submit:
            csv = Csv(form)
            csv.savecsv()
            return redirect(url_for('index', save=True))
        else:
            print(form.errors)
        return render_template('form.html', form=form, save=save)
...