使用带参数的 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 的解决方案
我正在尝试将函数重定向到她自己,但更改了参数的值。
这是我的代码:
@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 的解决方案