2
respostas

[erro] não está acessando aos dados do db.sqlite3

Na linha 22 do index.html, quando utilizo {% if cards %} {% for fotografia in cards %} na estrutura de repetição a pagina não carrega.

E não está acessando aos dados do db.sqlite3

index.html:

  • {% for foto_id, info in cards.items %}
  • foto Estrelas

    {{fotografia.nome}}

    {{fotografia.legenda}}

    ícone de coração
  • {% endfor %}

    views.py:

    from django.shortcuts import render from galeria.models import Fotografia

    def index(request): fotografias = Fotografia.objects.all() return render(request, 'galeria/index.html', {"cards": fotografias})

    def imagem(request): return render(request, 'galeria/imagem.html')

2 respostas

Olá Daniele!

Pelo que entendi, você está enfrentando um problema ao acessar os dados do seu banco de dados db.sqlite3 no seu arquivo index.html.

Pelo código que você compartilhou, parece que você está passando os dados corretamente para o template index.html na sua função index do arquivo views.py. Você está passando a variável fotografias como contexto para o template, com o nome cards.

No entanto, no seu arquivo index.html, você está tentando acessar os dados usando a estrutura de repetição {% for foto_id, info in cards.items %}, mas não está funcionando corretamente.

Para corrigir isso, você precisa ajustar a estrutura de repetição no seu arquivo index.html. Em vez de usar {% for foto_id, info in cards.items %}, você pode tentar usar {% for fotografia in cards %}. Dessa forma, você poderá acessar os dados corretamente dentro do loop.

Além disso, antes do loop, você pode adicionar uma estrutura condicional para verificar se existem cards sendo recebidos. Você pode usar {% if cards %} para verificar se a variável cards contém algum valor. Dentro dessa estrutura condicional, você pode colocar o seu loop {% for fotografia in cards %} e, em seguida, fechá-lo com {% endif %}.

Por exemplo:

<ul class="cards__lista">
    {% if cards %}
    {% for fotografia in cards %}
    <li class="card">
        <!-- Restante do código -->
    </li>
    {% endfor %}
    {% else %}
    <!-- Código para exibir uma mensagem caso não haja cards -->
    {% endif %}
</ul>

Certifique-se também de atualizar todas as referências aos dados dentro do loop para usar a variável fotografia, como por exemplo {{fotografia.nome}} e {{fotografia.legenda}}.

Espero que isso resolva o problema e que você consiga acessar corretamente os dados do seu banco de dados no seu arquivo index.html. Se tiver mais alguma dúvida, é só me dizer!

Espero ter ajudado e bons estudos!

Usando {% for fotografia in cards %} em vez de {% for photo id, info in cards.items %} ocorre o seguinte erro: "Ocorreu um erro no servidor. Entre em contato com o administrador." Não estou conseguindo identificar o erro no código.

link do github https://github.com/Daniolimz/django1_space.git