3
respostas

erro no template ao recuperar a imagem

ola, tudo bem? estou com uma duvida:

supondo que esta aplicação tenha varias categorias. eu renomeei arquivo.save(f'{upload_path}/acao{acao.id}-{timestamp}.jpg') e fiz personalizado para cada categoria. e deu tudo certo em template puxando o id como este:

     <div class="container row text-center col-12">
                <div class="col-12">
                    <div class="card mb-4 " >
                        <img class="img-fluid"  src="{{ url_for('imagem', nome_arquivo=acaoimg) }}">
                        <div class="card-body">
                          <h5 class="card-title fw-bolder">{{acao.nome}}</h5>
                          <h6 class="fw-bolder">R$: {{acao.preco}}</h6>
                          <p class="fw-bold">{{acao.descricao}}</p>
                          <a href="#" class="btn btn-danger">Comprar</a>
                          <a href="#" class="btn btn-outline-danger">Adicionar ao carrinho</a>
                        </div>
                    </div>
                </div>
            </div>
            
            deu tudo super certo em todas as rotas. A unica que deu erro foi quando eu quis exibir todos em um único template:
            
             <section>
        <h2 class="text-center tamanho container mb-5">Jogos de ação</h2>
        <div class="container mx-auto">
          <div class="row">
            {% for acao in acoes %}
           
            <div class="col-md-3">
              <div class="card heigt">
                <img class="img-fluid"  src="{{ url_for('imagem', nome_arquivo=acaoimg) }}">
                  <div class="card-header back-card">
                    <h4 class="text-center">{{ acao.nome }}</h4>
                    <p >Preço R$: {{ acao.preco }}</p>
               </div>
            </div>
            {% endfor %}
          </div> 
        </div>
      </section>
      
      
      
      Acredito que seja por causa da expressao    {% for acao in acoes %} pois e a unica coisa que direre este templete do outro(que mostra detalhes do jogo) não estou conseguindo achar esta solução. como faço?
3 respostas

Olá Patricia, tudo bem?

Acredito que o problema esteja na forma como você está tentando acessar a imagem dentro do loop. No seu template, você está usando acaoimg para referenciar a imagem, mas dentro do loop, a variável que contém as informações de cada ação é acao.

Portanto, você deve usar acao.nome_arquivo (ou o nome do campo que contém o nome do arquivo da imagem em seu modelo de dados) para acessar o nome do arquivo da imagem.

Seu código ficaria assim:

{% for acao in acoes %}
    <div class="col-md-3">
        <div class="card heigt">
            <img class="img-fluid"  src="{{ url_for('imagem', nome_arquivo=acao.nome_arquivo) }}">
            <div class="card-header back-card">
                <h4 class="text-center">{{ acao.nome }}</h4>
                <p >Preço R$: {{ acao.preco }}</p>
            </div>
        </div>
    {% endfor %}

Caso a minha solução não resolva o seu problema, peço que compartilhe todo o seu projeto, via GitHub ou Drive do Google. Assim poderei realizar testes a fim de identificar a causa dessa situação.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Oi bom dia :)

Eu ainda não consigo. Eu fiz uma loja em cima deste arquivo inicial então algumas coisas mudaram mas o erro ainda persiste https://github.com/PatriciaAraujoFaria/lojatata.git

Eu vou ficar eternamente grata a você, pois não estou conseguindo e tá faltando praticamente só isso.

Caminhos:

views_produtos. la tem algumas configurações e depois passa para as categorias. as funcoes são as duas que estão no fim de cada categoria de produto. Estou tentando exibir o loop em index e nas categoria (vestidos, blusas), onde é exibido varios itens. paty@gmail.com / paty / administrador teste@gmail.com / teste/ para usuario comum

Muito grata

Oi, Patricia, boa tarde!

Ao tentar acessar o link do repositório do GitHub que contém o seu projeto, recebi o erro 404. Esse erro significa que não foi possível encontrar a página referente ao seu repositório, logo, ou você enviou o link com algum erro, ou esse repositório não existe.

Poderia verificar isso e me retornar o link correto?

No mais, estarei à disposição!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software