3
respostas

Dúvida em Flask

Bom dia. Tou com um probleminha no Flask e gostaria de saber se uma alma iluminada aqui consegue me ajudar rs.

Tou querendo desenvolver uma web app usando Flask que lê dados de uma porta serial usando a lib "pyserial" e mostra os resultados numa table html em tempo real.

Para testar a possibilidade disso, tentei desenvolver um código que mostrasse algo assim:

HTML (uma tabelinha simples):

<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <table>
        <thead>
            <tr>
                <th>Cabeçalho</th>
            </tr>
        </thead>
        <tbody class="corpo-tabela"></tbody>
    </table>
    <script src="jquery.js"></script>
    <script src="principal.js"></script>
</body>
</html>

.py:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def hello_while():
    x = 0
    while x < 20:
        print(x)
        x += 1
        return render_template('index.html', x = x)

app.run(debug=True)

javascript:

var x = {{ x }};
var corpoTabela = $(".corpo-tabela");
var linha = "<tr>" +
              "<td>" +
                  x +
              "</td>" +
            "</tr>";
corpoTabela.append(linha);

Sei que a lógica tá meio zoada porque eu não obtive o que eu queria. O que eu quero é que basicamente o Python envie os x obtidos no while para o JavaScript, que adiciona os x a novas linhas da tabela, e vai mostrando a tabela crescendo em tempo real até a condição de parada do while chegar. Não usei setInterval no JavaScript porque quero que quem envie as variáveis é o Python e não o JavaScript.

Tentei colocar o render_template dentro do while mais pra mostrar o que eu queria, mas sei que assim não dá certo.

Alguma alma iluminada aí pra ajudar? Se ficou confuso eu posso detalhar melhor o problema.

3 respostas

Oi, que erro que tá dando? Se não tá dando erro nenhum posta o html de saída também para analisarmos.

Só uma correção, o html no final, no script, tá assim:

<script src="{{url_for('static', filename='jquery.js')}}"></script>
<script src="{{url_for('static', filename='teste.js')}}"></script>

E o html não mostra a variável em nenhum momento. No console o JS dá Syntax Error: Unexpected token { sendo que a forma de capturar dados do Flask com JS é essa {{ variavel }}.

Verifique no seu browser nas ferramentas de desenvolvedor na aba network se ele conseguiu carregar todas as bibliotecas. E também vou precisar ver o html de saída pra analisar.