Luiz, boa tarde. Tudo bem?
Não sei em qual parte do curso você está, deixarei uma explicação com os arquivos da aula 5. Tudo bem?!
No arquivo dao.py
é feito a recuperação dos dados do banco. Vamos pegar como exemplo o método listar da classe JogoDao:
def listar(self):
cursor = self.__db.connection.cursor()
cursor.execute(SQL_BUSCA_JOGOS)
jogos = traduz_jogos(cursor.fetchall())
return jogos
Neste método, na segunda linha conectamos ao banco. Já na terceira, executamos um sql responsável por nos retornar os dados do banco, que irá pegar o id, nome, categoria e console da tabela jogo:
SQL_BUSCA_JOGOS = 'SELECT id, nome, categoria, console from jogo'
Na quarta linha, utilizamos o método traduz_jogos para formatar os dados da forma como queremos, pois, o resultado do nosso sql será uma tupla de tuplas, algo como:
((4, 'Super Mario', 'RPG', 'SNES'), (32, 'FIFA', 'Esporte', 'SNES'))
E para destrinchar isto, retornamos no método traduz_jogos uma instancia da classe Jogo, que possui como atributos nome, categoria, console e id.
Isto será útil para que consigamos acessar um jogo por seu atributo, por exemplo:
- nome:
jogo.nome
- categoria:
jogo.categoria
e assim por diante.
Agora, no arquivo view.py
é feito uma instanciação da classe JogoDao e passado como parâmetro uma instância do nosso banco. Pegando agora como exemplo a rota de index
:
@app.route('/')
def index():
lista = jogo_dao.listar()
return render_template('lista.html', titulo='Jogos',
jogos=lista)
Observe o seguinte: chamamos o nosso método listar e para renderizar o template de lista.html, passamos um parâmetro nomeado de "jogos" que recebe o conteúdo da função listar· Com isso, fizemos o seguinte:
- Recuperamos os dados do banco através do método listar
- Passamos estes dados para o arquivo
lista.html
Sendo assim, precisamos mostrar estes dados no arquivo lista.html
. Certo?!
E para isso, fazemos uma estrutura de repetição, pois, o método listar irá nos retornar uma lista de jogos. Lembrando que, como formatamos os dados, podemos acessá-los por meio de seus atributos: jogo.nome, jogo.categoria...
{% for jogo in jogos %}
<tr>
<td>{{ jogo.nome }}</td>
<td>{{ jogo.categoria }}</td>
<td>{{ jogo.console }}</td>
</tr>
</tbody>
{% endfor %}
Este é o processo para recuperar os dados do banco e mostrá-los na tela.
Caso ainda tenha ficado algum resquício de dúvida, não hesite em perguntar. Estou a disposição.
E caso esteja ocorrendo algum erro no seu código, compartilhe-o conosco para que possamos ajudá-lo.
Espero ter ajudado. Abraços e bons estudos!