3
respostas

[Dúvida] Entendimento sobre a aula

Minha primeira dúvida inicia com o for da página index.html

<section class="galeria">
                    <div class="cards">
                        <h2 class="cards__titulo">Navegue pela galeria</h2>
                        <ul class="cards__lista">
                            {% if cards %}
                            {% for fotografia in cards %}
                            <li class="card">
                                <a href="{% url 'imagem' fotografia.id %}">
                                    <img class="card__imagem" src="{% static '/assets/imagens/galeria/'%}{{ fotografia.foto }}" alt="foto">
                                </a>
                                <span class="card__tag">Estrelas</span>
                                <div class="card__info">
                                    <p class="card__titulo">{{ fotografia.nome }}</p>
                                    <div class="card__texto">
                                        <p class="card__descricao">{{ fotografia.legenda }}</p>
                                        <span>
                                            <img src="{% static '/assets/ícones/1x/favorite_outline.png' %}" alt="ícone de coração">
                                        </span>
                                    </div>
                                </div>
                            </li>
                            {% endfor %}
                            {% else %}
                            {% endif %}

Para cada objeto instanciado da Classe Fotografia que é o nosso model, ele irá criar essa estrutura acima, certo?

Para acessar cada campo do banco de dados criado, ele usa o fotografia."campo", como o fotografia.foto, fotografia.legenda ex:

{{ fotografia.nome }}

Não entendi como é possível acessar os atributos através do nome fotografia se quando foram instanciados os objetos no Shell, usamos foto = Fotografia(nome=""...), sei que está correto, mas não consegui entender porque a chave para acessar os atributos é fotografia e não foto.
def index(request):
    fotografias = Fotografia.objects.all()
    return render(request, 'galeria/index.html', {"cards": fotografias})

Para entendimento deste trecho do arquivo views.py, foi criado uma variável "fotografias" que recebe todos os objetos criados no model Fotografia, certo? E estes objetos alimentam o dicionário criado {"cards" : fotografias}? Para cada objeto criado no model Fotografia ele irá criar um par no dicionário sempre com a chave "cards"?

Caso não tenha ficado claro minha dúvida, pode falar.

3 respostas

Voce esta acessando com o nome fotografia pois no for voce incluiu fotografia in cards, ou seja para cada card voce deu o nome fotografia, se voce mudasse por exemplo para for banana in card ele seria acessivel com banana.nome por exemplo.

Obrigado, respondeu essa dúvida, poderia por gentileza responder as demais? Obrigado.

Imagino que a dúvida seja quanto ao Cards e fotografias certo?

Neste caso o Cards é o nome que você deu para o conjunto de objetos que está dentro de fotografias, objetos estes que você capturou com Fotografia.objects.all().

Desta forma, quando você for mexer no jinja você usará o nome cards para acessar essa lista, você também poderia ter mandado como {"fotografias": fotografias},

ai o seu for seria {%for qualquer_coisa in fotografias%}