使用带参数的 url_for 进行 Flask 重定向

Flask redirect using url_for with parameter

我正在尝试将函数重定向到她自己,但更改了参数的值。

这是我的代码:

@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 %}

在路由中使用默认值:

    @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)

我找到了替代解决方案

我改了:

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

这个

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

它将创建一个新的渲染

我在 form.html 代码中添加了这个

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

这解决了我的问题,原因是我有一条确认消息(当保存为 True 时)并且字段被清除

但如果有人真的需要 return redirect url_for 可以毫无问题地使用 Suman Niroula 的解决方案