Переменная колбы не переносится на следующую страницу - PullRequest
0 голосов
/ 29 апреля 2019

У меня проблема с Flask.Я объявляю переменную до того, как выполняется любая маршрутизация, и до объявления какой-либо функции.Первоначально для переменной задана пустая строка.

Затем, когда пользователь нажимает кнопку отправки, значение этой переменной get изменяется, и, поскольку она объявлена ​​раньше всего, она должна быть доступна из другой функции (функции, котораяотображает другую страницу).

Я могу получить доступ к переменной, но по какой-то причине она пуста.

Вот мой код:

predicted_output = ""

.....

@app.route("/", methods=["GET", "POST"])
def index():
......
    pred_s = str(prediction)
    m = Money(amount=pred_s, currency='EUR')

    predicted_output = str(m)
    return redirect(url_for("result"))


@app.route("/result")
def result():
    return render_template("result.html", the_final_value=predicted_output)

И HTML:

<div class="text-out-main">
    {{ the_final_value }}
</div>

Где я ошибся?

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

Пожалуйста, используйте сеанс для хранения значений между запросами:

В дополнение к объекту запроса есть также второй объект, называемый сеансом, который позволяет хранить информацию, специфичную для пользователя, от одного запроса до следующего. Это реализовано поверх файлов cookie для вас и криптографически подписывает файлы cookie. Это означает, что пользователь может просматривать содержимое вашего файла cookie, но не изменять его, если он не знает секретный ключ, используемый для подписи.

Например:

from flask import session

app.secret_key = 'dev'

@app.route("/", methods=["GET", "POST"])
def index():
    pred_s = str(prediction)
    m = Money(amount=pred_s, currency='EUR')

    session['predicted_output'] = str(m)  # store it to session
    return redirect(url_for("result"))


@app.route("/result")
def result():
    predicted_output = session['predicted_output']  # get it from session
    return render_template("result.html", the_final_value=predicted_output)
0 голосов
/ 29 апреля 2019

Вам нужно отправить данные во время перенаправления и перехватить их после, например:

return redirect(url_for("result", the_final_value=predicted_output))

@app.route("/result")
def result(the_final_value):
    return render_template("result.html", the_final_value=the_final_value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...