Problemas com Flask

19 views
Skip to first unread message

Francisco Alex

unread,
Jan 24, 2021, 4:36:42 PM1/24/21
to Grupo de usuários Python - Bahia
Bom dia pessoal! Estou tendo uma dor de cabeça com Flask e MySQL. Meu problema é um seguinte: Estou em um projeto em que um dos campos de uma das tabelas é BLOB, para o cadastro de imagens - eu sei que não é uma boa prática de programação cadastrar imagens no banco, mas é uma necessidade - e quando cadastro, ok, funciona. Mas o problema é que quando vou buscar essa imagem - realizar um SELECT - a imagem não aparece no card do bootstrap. Por favor, preciso de ajuda. 

============== Rota da Index fazendo o select dos dados no banco =========

# Criando a rota index
@app.route('/', methods=['GET', 'POST'])
def index():
conn = conectar()
cursor = conn.cursor()
cursor.execute('SELECT foto, nome, descricao FROM curso')
dados = cursor.fetchall()
conn.commit()
cursor.close()
return render_template('index.html', dados=dados)

============== card do bootstrap tentando puxar a imagem ================

<div id="cards" class="container">
    <div class="row">
    {% for dado in dados %}
         <div class="card" style="width: 18rem;">
         <img src="{{ dado[0] }}" class="card-img-top" alt="imagem">
         <div class="card-body">
             <h5 class="card-title">{{ dado[1] }}</h5>
             <p class="card-text">{{ dado[2] }}</p>
             <a href="{{ url_for('estudantes') }}" class="btn btn-primary">Fazer Curso</a>
         </div>
         </div>
   {% endfor %}
   </div>
</div>

===================== RESULTADO QUE SAI =============================
foto.png

======================== Caso queiram ver em imagens ================
------>>>>>> Seleção no banco 
foto1.png

---------->>>>> Puxando imagem 
foto3.png

George Moura

unread,
Jan 24, 2021, 4:45:54 PM1/24/21
to grupy-ba
Quando você cadastra uma imagem no banco, tu registra o base64 dela, no momento de exibir no front, você tem 2 opções:

1 - criar um endpoint em que o response é a imagem, daí no src do seu template seria src="http://endpoint.com.br/images/id.jpg' como nesse exemplo aqui: https://stackoverflow.com/a/8637217/2891567
2 - usar o base64 da imagem no src, como você fez, mas precisa adicionar algo antes: "data:image/png;base64, " - se sua imagem for um png
ex:
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
    AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
        9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />

--
Você recebeu essa mensagem porque está inscrito no grupo "Grupo de usuários Python - Bahia" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para grupy-ba+u...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/grupy-ba/64f04c2b-3c72-4b73-bfaf-181770e14375n%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages