Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como inserir imagem na tabela do index da aplicação?

Oi,

Estou tentando fazer as imagens de cada jogo aparecer em um coluna na tela inicial da aplicação. Antes de implementar o timestamp no nome das imagens eu consegui fazer, mas agora não sei mais como fazer.

O código que tentei implementar é o seguinte: No template list.html eu inseri a coluna:

<td><img src="{{ url_for('imagem_id', id = jogo.id, nome_arquivo=nome_file) }}"></td>

Na aplicação jogoteca.py eu criei uma nova rota (que não funcionou) para não alterar as demais rotas:

@app.route("/uploads/<nome_arquivo>")
def imagem_id(id):
    for nome_file in os.listdir(app.config['UPLOAD_PATH']):
        if f'capa{id}' in nome_file:
            return send_from_directory("uploads", nome_file)

Nesse caso a página funcionou, mas não carregou as imagens. Alguém tem uma dica de como fazer isso funcionar corretamente?

At.te

2 respostas
solução!

Oi Graciliano, tudo bem?

Neste exemplo que você mostrou o que está fazendo com que o código não funcione é o fato do parâmetro da rota estar diferente do parâmetro da função. Tente:

@app.route("/uploads/<id>")
def imagem_id(id):

Porém, uma maneira que será mais eficiente embora mais trabalhosa para fazer o que você deseja, é alterar a lógica de criação do banco e adicionar uma coluna para salvar o caminho da imagem. Isto fará com que cada imagem esteja relacionada diretamente a um jogo, sendo assim você poderá chamá-la da seguinte forma:

jogo.nome_imagem

Abraços e bons estudos!

Oi, Nádia,

Obrigado pela resposta. Tentei a alternativa 1 e não funcionou =(. Não tentei a alternativa 2, mas como é uma informação que estará no BD imagino que funcionaria bem =D. Comecei o curso de Django e me adaptei melhor, por isso não vou tentar a segundo opção.

At.te.