Pular para o conteúdo
murad.guide

Aplicações Web

Capítulo 20

Django: projeto e modelos

2 min de leitura 442 palavras 1 gravura

Neste capítulo você vai criar o projeto Django do blog do Ateliê e um modelo Post. O projeto-fio é o Ateliê Boa Viagem, ateliê digital fictício em Boa Viagem, Recife.

Antes desta etapa

Python 3. Prefira o volume PHP só se for ao módulo Symfony depois. Aqui é Python.

Seu ponto de partida

Use o exemplo 20-django-projeto do pacote anexo e copie inicio/ para uma pasta de prática fora do original. A raiz do exemplo é a referência completa desta etapa.

Use servidor só em 127.0.0.1 quando o README do exemplo pedir HTTP local. Abrir ou testar não publica nada.

Como praticar

Leia → copie ou digite → mude uma coisa → preveja → salve → recarregue → confira. Restaure cada experiência antes da próxima. Faça as atividades antes de abrir as respostas comentadas.

Projeto e app

Django organiza projeto (config) e apps (funcionalidades). O blog do Ateliê vive num app posts.

Faça na sua cópia

Confira o trecho no contexto do exemplo antes de mudar.

python -m django startproject atelie .
python manage.py startapp posts

Mude uma coisa e preveja

Confira as pastas criadas na referência do exemplo.

Anote o que espera observar antes de salvar e recarregar.

Recarregue e confira

manage.py e posts/ existem.

Se não acontecer

Use o ambiente Python do README; rode só em 127.0.0.1 depois.

Django MVC

Modelo Post

Um modelo descreve a tabela. Título, texto, data. Conteúdo fictício.

Faça na sua cópia

Confira o trecho no contexto do exemplo antes de mudar.

class Post(models.Model):
    titulo = models.CharField(max_length=200)
    texto = models.TextField()
    publicado_em = models.DateTimeField(auto_now_add=True)

Mude uma coisa e preveja

Acrescente um campo autor como CharField.

Anote o que espera observar antes de salvar e recarregar.

Recarregue e confira

makemigrations detecta a mudança (quando rodar).

Se não acontecer

Registre o app em INSTALLED_APPS.

migrate local

python manage.py migrate cria o SQLite local. Não use produção neste volume.

Faça na sua cópia

Confira o trecho no contexto do exemplo antes de mudar.

python manage.py migrate

Mude uma coisa e preveja

Rode migrate na cópia de prática.

Anote o que espera observar antes de salvar e recarregar.

Recarregue e confira

db.sqlite3 aparece.

Se não acontecer

Ative o venv se o exemplo usar um.

Atividades

Atividade 1

Diferença entre projeto e app no Django?

Atividade 2

O que um modelo representa?

Atividade 3

Qual banco este volume usa?

Respostas comentadas

Resposta da atividade 1

Projeto = configuração; app = módulo de funcionalidade.

Resposta da atividade 2

Estrutura dos dados (tabela) em Python.

Resposta da atividade 3

SQLite local.

O arquivo completo

Referência do exemplo 20-django-projeto, reproduzida aqui para que você possa conferir sem sair da página.

manage.py

#!/usr/bin/env python
import os, sys
def main():
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "atelie.settings")
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)
if __name__ == "__main__":
    main()

posts/templates/posts/lista.html

<!DOCTYPE html>
<html lang="pt-BR"><head><meta charset="utf-8"><title>Blog do Ateliê</title></head>
<body>
<h1>Blog do Ateliê Boa Viagem</h1>
{% for post in posts %}
<article><h2>{{ post.titulo }}</h2><p>{{ post.autor }}</p><p>{{ post.texto }}</p></article>
{% empty %}<p>Nenhuma publicação ainda.</p>{% endfor %}
</body></html>