Перенаправление Python (с задержкой) - PullRequest
0 голосов
/ 15 ноября 2018

Итак, у меня есть эта страница 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

Сайт работает нормально, но не перенаправляет, и я не знаю, как отложить все это.Идеи ... Пожалуйста :-)

Ответы [ 2 ]

0 голосов
/ 06 августа 2019

Вы можете использовать оператор return и возвращать строковый формат.

В качестве <redirect url> вы можете установить любой URL-адрес, доступный для вашего сервера.

Это решениепохож на dmitrybelyakov's, но это быстрое решение без необходимости работать с новыми маленькими 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)
0 голосов
/ 15 ноября 2018

Ну, ваша функция просто возвращает обработанный шаблон и никогда не достигает оператора перенаправления.Если вы хотите показать страницу и затем выполнить перенаправление после задержки, используйте перенаправление 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...