Parte 6: Criando templates#
A nossa vida como desenvolvedores de softwares sempre será muito mais fácil se mantivermos as responsabilidades dos artefatos que criamos separadas. Em outras palavras, cada artefato com uma responsabilidade bem definida.
Por isso que o nosso objetivo nesta parte do handout é fazer uso de templates para que possamos separar
algumas das funcionalidades que até o momento estão todas codificadas dentro do arquivo views.py
.
Exercise 1
Mas por que dois arquivos? Para que eles servem?
Provavelmente nós teremos mais do que uma página no nosso projeto. Por isso, criamos o arquivo base.html
com o código HTML que vai se repetir em todas as páginas. No index.html
nós usamos o {% extends "notes/base.html" %}
para indicar para a engine de template do Django que nós queremos usar o base.html
como base. Então modificamos apenas os blocos necessários. O que está entre o {% block content %}
e {% endblock %}
no index.html
substituirá esse mesmo bloco no base.html
. Você pode dar o nome que quiser para os seus blocos.
Ok, mas como eu uso isso?#
Vamos lá!
Exercise 2
A página ainda não está nada elegante, mas já deve mostrar o conteúdo. Ou pelo menos parte dele. Além do HTML gerado pelo servidor, aplicações web normalmente precisam servir outros arquivos – como imagens, JavaScript, ou CSS – necessário para renderizar a página web completa. No Django, nós chamamos estes arquivos de “arquivos estáticos”.
Para projetos pequenos isto não é tão relevante porque você pode manter os arquivos estáticos em qualquer lugar do seu servidor web. No entanto, em projetos grandes - especialmente aqueles compontos por múltiplas aplicações - trabalhar com múltiplos conjuntos de arquivos estáticos pode ser complicado.
É para isto que o django.contrib.staticfiles
serve: ele coleciona os arquivos estáticos de cada uma de suas aplicações (e qualquer outro lugar que você especifique) em um único local que pode ser facilmente servido em produção.
Exercise 3
Exercise 4
A imagem foi, mas e as anotações no banco de dados?#
Esse é o nosso próximo passo! Sabemos que as anotações que criamos manualmente pelo Django Admin estão armazenadas no banco de dados, mas como fazemos para acessá-las e depois passar para o template?
O template do Django é capaz de executar um código parecido com Python e inclusive pode receber algumas variáveis! Vamos resolver primeiro o problema de como carregar os dados do banco de dados.
Exercise 5
Exercise 6
Exercise 7
O template tag {% for %}{% endfor %}
funciona de forma muito parecida com o for
do Python. O seu conteúdo é executado para cada elemento na lista fornecida. Uma das principais diferenças é a necessidade do {% endfor %}
ao final. Isso acontece porque no HTML as indentações não podem ser utilizadas para definir blocos como no Python.
Quando queremos mostrar o valor de uma variável no HTML (equivalente ao que fazíamos com o .format()
) devemos utilizar o {{}}
.
Importante
Muitas coisas aconteceram nesse último exercício. Pare por um instante para refletir e garantir que entendeu o que está acontecendo nele.
Exercise 8
Acabou? Vamos para a próxima parte!