Как сначала сделать шаблон, а затем перенаправить его после получения сообщения с сервера? - PullRequest
0 голосов
/ 08 апреля 2020

Я использую flask и сначала хочу return render_template("loading.html"), когда сообщение msg = s.recv(1024) получено с сервера, перенаправляющего на следующую страницу. return redirect("/loading/Connected"). Я не знаю почему, но код недоступен. Тогда мне удалось немного изменить его, но он все еще не работает. Это всего лишь тестовый проект и не требует большого обходного пути. Мне просто интересно, если кто-нибудь знает, что я могу сделать, я могу сделать перенаправление pssible после рендеринга шаблона.

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((socket.gethostname(), 17541))

@app.route('/loading')
def loading():
    while True:
        try:
            return render_template('loading.html')
        finally:
            msg = s.recv(1024)
            return redirect("/loading/connected")

1 Ответ

0 голосов
/ 08 апреля 2020

В python, когда вы return в функции, она останавливает все дальнейшее выполнение. Таким образом, когда вы используете return render_template("loading.html"), вы блокируете все дальнейшее выполнение функции. Причина этого проста: возьмите следующую функцию:

def threeandfour():
    return 3
    return 4

threeandfour() #this would return 3 only since otherwise it would have to return both three and four, which can't happen.

Моим решением было бы отправить страницу клиенту. Тогда я буду ждать ответа клиентов. Когда клиент ответит через @app.route()'/msg/<data>', я возьму ответ и верну клиенту новый URL.

@app.route('/loading')
def loading():
    while True:
        try:
            return render_template('loading.html')

@app.route('/msg/<data>')
def data_recieved(data):
    #do stuff with data
    return render_template("/loading/connected")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...