Julia Elman e Mark Lavin Novatec
[2015] Novatec Editora Ltda Authorized Portuguese translation of the English edition of Lightweight Django, ISBN 9781491945940 2015 Julia Elman and Mark Lavin. This translation is published and sold by permission of O Reilly Media, Inc., which owns or controls all rights to publish and sell the same. Tradução em português autorizada da edição em inglês da obra Lightweight Django, ISBN 9781491945940 2015 Julia Elman e Mark Lavin. Esta tradução é publicada e vendida com a permissão da O'Reilly Media, Inc., que detém ou controla todos os direitos para publicação e venda desta obra. Novatec Editora Ltda. 2015. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates Tradução: Lúcia Kinoshita Revisão gramatical: Viviane Oshima Assistente editorial: Priscila A. Yoshimatsu Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-424-3 OG20150318 Histórico de impressões: Março/2015 Primeira edição Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 São Paulo, SP Brasil Tel.: +55 11 2959-6529 Email: novatec@novatec.com.br Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec
Sumário Prefácio...9 Pré-requisitos...17 Capítulo 1 O menor projeto Django do mundo...21 Hello Django...22 Criando a view...22 Os padrões de URL...23 As configurações...23 Executando o exemplo...25 Melhorias...27 Aplicação WSGI...27 Configurações adicionais...29 Template reutilizável...32 Capítulo 2 Aplicação web sem estados...35 Por que sem estados?...36 Aplicações reutilizáveis versus serviços compostos...36 Servidor de placeholders de imagens...37 Views...38 Padrões de URL...39 A view placeholder...40 Manipulação de imagens...42 Adicionando caching...45 Criando a view da página inicial...49 Adicionando configurações para recursos estáticos e templates...49 Template para a página inicial e CSS... 51 Projeto completo...53 5
6 Django Essencial Capítulo 3 Criando um gerador de sites estáticos...57 Criado sites estáticos com o Django...58 O que é prototipação rápida?...58 Layout inicial do projeto...59 Estrutura de arquivos/pastas...59 Configurações básicas... 60 Renderização de páginas...62 Criando nossos templates básicos...62 Gerador de páginas estáticas...64 Estilização básica... 68 Layouts dos protótipos e navegação...70 Gerando conteúdo estático... 77 Configuração... 77 Comando personalizado de gerenciamento...78 Criando uma única página...80 Servindo e compactando arquivos estáticos...82 Gerando hashing de nossos arquivos CSS e JavaScript...82 Compactando nossos arquivos estáticos...84 Gerando conteúdos dinâmicos...87 Atualizando nossos templates...87 Adicionando metadados... 90 Capítulo 4 Criando uma API REST...97 Django e REST...98 Mapa de dados de um quadro de tarefas Scrum...99 Layout inicial do projeto...100 Configurações do projeto...101 Sem Django admin?... 103 Modelos... 103 Criando o design da API... 107 Endpoints para sprints...108 Endpoints para tarefas e usuários...110 Fazendo a conexão com o roteador...113 Ligando os recursos...114 Testando a API...117 Usando a API navegável...118 Adicionando filtragem... 122 Adicionando validações... 128 Usando um cliente Python... 132 Próximos passos... 136
Sumário 7 Capítulo 5 Django no lado cliente com Backbone.js...137 Visão geral rápida do Backbone... 139 Criando os arquivos de seu projeto... 140 Dependências do JavaScript...141 Organização dos arquivos de sua aplicação Backbone... 144 Conectando o Backbone ao Django...147 Roteamento do Backbone no lado cliente... 150 Criando uma view básica para a página inicial... 150 Definindo um roteador mínimo...151 Usando _.template do Underscore.js... 153 Implementando a autenticação de usuários... 156 Criando um modelo de sessão... 157 Criando uma view de login... 162 View genérica para formulários... 170 Autenticando rotas...174 Criando uma view de cabeçalho... 176 Capítulo 6 Aplicação web single-page...187 O que são aplicações web single-page?... 187 Descobrindo a API... 188 Acessando a API... 188 Personalização de modelos... 190 Personalização de coleções...191 Criando a nossa página inicial... 193 Exibindo os sprints atuais... 193 Criando novos sprints... 196 Página de detalhes do sprint...200 Renderizando o sprint... 201 Roteando os detalhes do sprint...203 Usando o estado do cliente...204 Renderizando as tarefas...207 AddTaskView... 216 Tarefas CRUD... 221 Renderizando tarefas em um sprint...222 Atualizando as tarefas...227 Recursos de edição inline...231
8 Django Essencial Capítulo 7 Django em tempo real...236 APIs de tempo real do HTML5... 237 Websockets... 237 Server-sent Events (SSEs)...238 WebRTC...238 Websockets com o Tornado... 239 Introdução ao Tornado...241 Registrar-se para receber mensagens...248 Comunicação nos clientes... 252 Exemplo mínimo... 252 Wrapper para o socket... 255 Conexão com o cliente... 259 Enviando eventos a partir do cliente...262 Tratando eventos do cliente...270 Atualizando o estado da tarefa...273 Capítulo 8 Comunicação entre Django e Tornado...279 Recebendo atualizações no Tornado...279 Enviando atualizações do Django... 281 Tratando atualizações no cliente...284 Melhorias no servidor...286 Robustez nos registros de clientes...286 Autenticação no websocket...292 Melhorias nas atualizações...297 Atualizações seguras...300 Servidor de websocket definitivo...304 Sobre os autores...310 Colofão...311