所以我在烧瓶上运行了这个python页面。直到我想要重定向之前,它都可以正常工作。
@app.route("/last_visit")
def check_last_watered():
templateData = template(text = water.get_last_watered())
return render_template('main.html', **templateData)
return redirect(url_for('new_page')) #with a delay here of 3 secs
该站点工作正常,但无法重定向,而且我不知道如何延迟整个过程。 想法...请:-)
答案 0 :(得分:0)
好吧,您的函数只会返回渲染的模板,而不会到达重定向语句。如果要显示页面,然后在延迟后进行重定向,请在模板中使用javascript重定向:
@app.route("/last_visit")
def check_last_watered():
templateData = template(text = water.get_last_watered())
templateData['redirect_url'] = url_for('new_page')
return render_template('main.html', **templateData)
然后在您的main.html
中:
<script>
setTimeout(function(){
window.location.href = '{{redirect_url}}';
}, 2000);
</script>
答案 1 :(得分:0)
您可以使用return
语句并返回字符串格式。
作为<redirect url>
,您可以将任何可用的URL设置为后端。
此解决方案类似于dmitrybelyakov的解决方案,但是它是一种快速解决方案,无需处理新的小型html模板。
return f"<html><body><p>You will be redirected in 3 seconds</p><script>var timer = setTimeout(function() {{window.location='{ <redirect url> }'}}, 3000);</script></body></html>"
示例:
让我们说您要提交表单并遇到运行时问题,要求您在一定时间后执行此重定向。
@app.route('/')
def your_func():
form = FormFunc()
if form.validate_on_submit():
# do something
wait_time = 3000
seconds = wait_time / 1000
redirect_url = 'https://www.example.com/'
# if the validation is successful, forward to redirect page, wait 3 seconds, redirect to specified url
return f"<html><body><p>You will be redirected in { seconds } seconds</p><script>var timer = setTimeout(function() {{window.location='{ redirect url }'}}, { wait_time });</script></body></html>"
# if the validation is not successful, reload the form
return render_template('formPage.html', form=form)
答案 2 :(得分:0)
如果您需要渲染模板并在三秒钟后重定向,则可以将refresh
作为时间传递,而url
则使用您需要重定向的URL。
@app.route('/error/', methods=['GET'])
def error():
return render_template('error.html'), {"Refresh": "1; url=https://google.com"}