CURSOS / TECNOLOGIA / PYTHON NA PRÁTICA (ETAPA 5 DE 5)
← Voltar aos cursos
CURSO PRÁTICO · ETAPA 5 DE 5 · DADOS E WEB

Projetos de Aplicação Real

Transforme dados em gráficos com Matplotlib e Plotly, consuma CSV, GeoJSON e APIs REST com requests e construa uma aplicação web completa com autenticação e deploy usando Django.

Ilustração editorial de fluxo Python para visualização de dados com Matplotlib e Plotly, consumo de APIs JSON e aplicação web Django
6 Oficinas PráticasCobrindo os Capítulos 15 a 20 de Python Crash Course (3ª ed.).
Podcast IntegradoOuça Da visualização de dados ao Django direto na página.
Dados + Web Full-StackDe gráficos exploratórios a rotas, ORM, contas e deploy.

Trilha Completa em 5 Etapas

Você está na Etapa 5: Projetos de Aplicação Real — etapa final do curso.

PODCAST DE APOIO · REPRODUÇÃO DIRETA NA PÁGINA

Da Visualização de Dados ao Django

Ouça o episódio complementar direto por aqui para conectar geração de gráficos com Matplotlib e Plotly, consumo de APIs JSON e a arquitetura completa de aplicações web com Django.

Abrir episódio no RSS.com ↗

Oficinas de Dados, APIs e Web

Capítulos 15 a 20 · Python Crash Course
Diagrama ilustrativo de pipeline de dados CSV/JSON para visualização e arquitetura MVT no Django
Do lado esquerdo, dados brutos em CSV e JSON viram gráficos; do lado direito, o Django organiza Models, Views e Templates na web.
OFICINA 01 · CAPÍTULO 15

Gerando Dados com Matplotlib & Passeios Aleatórios

O Matplotlib é a biblioteca clássica para gráficos estáticos e publicação científica. Com plt.subplots(), você separa a figura (fig) dos eixos (ax), controlando títulos, rótulos, estilos (plt.style.use('seaborn-v0_8')) e dispersão (ax.scatter()) com mapas de cores.

Python · Gráfico de linha e dispersão com Matplotlib
import matplotlib.pyplot as plt

x_values = range(1, 101)
y_values = [x**2 for x in x_values]

plt.style.use('seaborn-v0_8')
fig, ax = plt.subplots()
ax.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, s=12)
ax.set_title('Quadrados', fontsize=18)
ax.set_xlabel('Valor', fontsize=12)
ax.set_ylabel('Quadrado', fontsize=12)
plt.savefig('squares_plot.png', bbox_inches='tight')
OFICINA 02 · CAPÍTULOS 15 E 16

Plotly Interativo, CSV e Mapas GeoJSON

Enquanto o Matplotlib gera imagens estáticas, o Plotly Express cria gráficos HTML interativos com zoom e tooltips. No Capítulo 16, você combina isso com leitura de arquivos reais via pathlib, csv.reader() (temperaturas históricas) e json.loads() (terremotos globais em GeoJSON plotados com px.scatter_geo()).

Python · Leitura segura de CSV com pathlib e módulo csv
from pathlib import Path
import csv

path = Path('weather_data/sitka_weather_2021_simple.csv')
lines = path.read_text(encoding='utf-8').splitlines()
reader = csv.reader(lines)
header_row = next(reader)
highs = [int(row[4]) for row in reader if row[4]]
OFICINA 03 · CAPÍTULO 17

Consumindo APIs REST com requests

Em vez de baixar arquivos manualmente, você pode consultar dados vivos diretamente pela rede usando a biblioteca requests. O fluxo padrão no Capítulo 17 (com as APIs do GitHub e Hacker News) segue quatro passos:

  1. Definir a URL da API e cabeçalhos (headers = {"Accept": "application/vnd.github.v3+json"}).
  2. Fazer a chamada r = requests.get(url, headers=headers) e checar r.status_code == 200.
  3. Converter a resposta JSON em dicionário Python com response_dict = r.json().
  4. Monitorar limites de taxa (rate limits) e plotar os repositórios mais populares com tooltips clicáveis no Plotly.
OFICINA 04 · CAPÍTULO 18

Introdução ao Django: Models, Views, URLs & Templates

Nos Capítulos 18 a 20, você constrói o projeto Learning Log com Django — um framework web completo ("baterias inclusas") que separa claramente dados, lógica e apresentação:

Arquitetura prática do projeto Learning Log no Django
Camada Arquivo Típico Responsabilidade
Model models.py Define tabelas do banco em Python (ex.: Topic e Entry com ForeignKey) e gera migrações (makemigrations / migrate).
URLs urls.py Mapeia rotas (ex.: topics/<int:topic_id>/) para a view correspondente.
View views.py Consulta o ORM, processa formulários (POST/GET) e envia o contexto ao template.
Template templates/*.html Renderiza HTML dinâmico com herança ({% extends "base.html" %}).
Terminal · Fluxo essencial de projeto e migrações Django
django-admin startproject ll_project .
python manage.py startapp learning_logs
python manage.py makemigrations learning_logs
python manage.py migrate
python manage.py runserver
OFICINA 05 · CAPÍTULO 19

Contas de Usuário, Formulários & Proteção de Dados

Para que cada pessoa cadastre seus próprios tópicos e anotações sem invadir os dados de outros usuários, o Capítulo 19 implementa um app dedicado (accounts) com:

  • ModelForm: gera formulários HTML seguros automaticamente a partir dos modelos Topic e Entry (com proteção CSRF nativa via {% csrf_token %}).
  • @login_required: decorador que bloqueia visitantes anônimos e redireciona para a tela de login.
  • Posse de dados (owner): vincular Topic a User via ForeignKey e validar if topic.owner != request.user: raise Http404 garante que ninguém acesse ou edite registros alheios pela URL.
OFICINA 06 · CAPÍTULO 20

Estilização com Bootstrap 5 & Deploy em Produção

No capítulo final, o Learning Log ganha visual profissional com django-bootstrap5 (barra de navegação responsiva, jumbotron e cartões estilizados) e vai para a nuvem com Git + Platform.sh:

Regra de ouro antes do deploy: nunca suba DEBUG = True nem chaves secretas fixas no código para produção. Use variáveis de ambiente, configure ALLOWED_HOSTS e trate erros 404/500 com templates dedicados.
LABORATÓRIO INTERATIVO · CAPÍTULOS 15 A 20

Simulador de Stack Python para Projetos Reais

Escolha a fonte de dados, o tipo de saída e a necessidade de autenticação para receber a arquitetura recomendada do livro.

Biblioteca / Framework Django + requests
Camada de Dados ORM + JSON API
Segurança Essencial @login_required + owner
Para aplicações web com login e dados por usuário alimentados por API, use Django com Models ligados a User, validação de posse (Http404) e requests para consumir endpoints JSON.
VERIFICAÇÃO DE DOMÍNIO · 4 QUESTÕES

Teste Rápido da Etapa 5

Valide os conceitos dos Capítulos 15 a 20 para encerrar a trilha Python na Prática.

1. Qual é a diferença principal entre usar Matplotlib e Plotly Express nos Capítulos 15–16?

2. Ao consumir uma API REST com requests.get(url), qual método transforma o corpo JSON em dicionário Python?

3. Depois de criar ou alterar uma classe em models.py no Django, quais dois comandos atualizam o banco de dados?

4. Como o Capítulo 19 impede que um usuário logado acesse o tópico privado de outro usuário digitando o ID na URL?

CONCLUSÃO DO CURSO

Checklist Final & Exportação

Marque cada marco concluído para fechar as 5 etapas de Python na Prática.

TRILHA CONCLUÍDA · 5 DE 5 ETAPAS

Jornada Python na Prática Completa!

Você foi dos fundamentos de variáveis e listas até o jogo Alien Invasion em Pygame, visualização de dados, APIs REST e aplicações web completas com Django.

Voltar ao Portal de Cursos →