Miguel Grinberg. Novatec

Documentos relacionados
Construindo Aplicações Node com MongoDB e Backbone Mike Wilson

Introdução ao GitHub Peter Bell e Brent Beer

Benjamin Bengfort Jenny Kim

Sumário. Prefácio Capítulo 1 Orientação e primeiras etapas Capítulo 2 Dados: trabalhando com texto e números... 40

Ryan Mitchell. Novatec

Ademir C. Gabardo. Novatec

Introdução às. Expressões Regulares. Michael Fitzgerald. Novatec

Shyam Seshadri & Brad Green

Indira Knight. Novatec

Novatec Editora Ltda

Karl Matthias Sean P. Kane

Matheus Marabesi Michael Douglas

Primeiros Passos com Sensores Kimmo Karvinen Tero Karvinen

Allan Liska e Timothy Gallo. Novatec

Primeiros Passos com o Netduino

Semmy Purewal. Novatec

Kenneth Reitz Tanya Schlusser

Jody Culkin e Eric Hagan

Osvaldo Santana Thiago Galesi

Web Interativa com Ajax e PHP

William Pereira Alves

Allen B. Downey. Novatec

Jonathan Weber e a equipe da LunaMetrics

Adrian Mouat. Novatec

JavaScript. de Alto Desempenho. Nicholas C. Zakas. Novatec

Shelley Powers. Novatec

André Gugliotti. Novatec

Guia Prático Richard E. Silverman

Simon Holmes. Novatec

Aaron Newcomb. Novatec

Raspberry Pi Manual do Usuário

Primeiros Passos com o Arduino

Sumário. Parte I Elementos essenciais Sobre o autor Sobre o revisor técnico Prefácio... 14

Adriano Pataro. Novatec

Chris Binnie. Novatec

Adrian Pruteanu. Novatec

Luiz Eduardo Borges. Novatec

Expressões Regulares Cookbook Jan Goyvaerts Steven Levithan

Ben Vinegar Anton Kovalyov

Jessey Bullock Jeff T. Parker

WordPress 3 Básico Stephanie Leary

Desenvolvendo Websites com PHP

Aditya Y. Bhargava. Novatec

Ademir Cristiano Gabardo. Novatec

jquery Mobile Desenvolva aplicações web para dispositivos móveis com HTML5, CSS3, AJAX, jquery e jquery UI Maurício Samy Silva Novatec

PHP. Programando com Orientação a Objetos. Pablo Dall Oglio. Novatec

3ª Edição Nilo Ney Coutinho Menezes

John Paul Mueller. Novatec

Objective-C Fundamental Christopher K. Fairbairn Johannes Fahrenkrug Collin Ruffenach

jquery Mobile Desenvolva aplicações web para dispositivos móveis com HTML5, CSS3, AJAX, jquery e jquery UI 2a Edição Maurício Samy Silva Novatec

Jarrod Overson e Jason Strimpel

Julia Elman e Mark Lavin. Novatec

Criando Relatórios com PHP Pablo Dall Oglio

Primeiros Passos com o Raspberry Pi

Hélio Engholm Jr. Novatec

A Arte de Escrever Programas Legíveis

Editor: Rubens Prates PY Editoração eletrônica: Carolina Kuwabata Revisão gramatical: Patrizia Zagni Capa: Edinei Gonçalves/Carolina Kuwabata

4ª Edição Pablo Dall Oglio

AngularJS. Uma abordagem prática e objetiva. Michael Henrique R. Pereira. Novatec

Ademir Ribeiro dos Passos

Primeiros Passos com o Arduino Massimo Banzi

Novatec Editora Ltda. [2014].

Aravind Shenoy Anirudh Prabhu

Edécio Fernando Iepsen

Novatec Editora Ltda

Aprenda a Programar com Minecraft

Robson Santos da Silva

Novatec Editora Ltda

Design Centrado no Usuário

Daniel Marcos Cunha Pereira

ADIANTI FRAMEWORK PARA PHP

Editor: Rubens Prates Revisão gramatical: Marta Almeida de Sá Editoração eletrônica: Carolina Kuwabata Assistente editorial: Priscila A.

Desenvolvimento de Grandes Aplicações Web

Wolfram Donat. Novatec

Jonathan Stark Brian Jepson

Programando com ASP.NET MVC. Aprenda a desenvolver aplicações web utilizando a arquitetura MVC. Alfredo Lotar. Novatec

Blender 3D jogos e animações interativas Allan Brito

Vinícius Manhães Teles prefácio de Kent Beck colaborações especiais de Kent Beck e Robert Mee

Programando para. iphone e ipad. Aprenda a construir aplicativos para o ios. André Milani. Novatec

2ª Edição Cláudio Torres

Arduino Básico. 2ª edição. Michael McRoberts. Novatec

Maurício Samy Silva. Novatec

Arduino Básico Michael McRoberts

Guia Mangá Circuitos Eletrônicos

Aprendendo. Unix no OS X. Mountain Lion. Mergulhando no Terminal e no Shell. Dave Taylor. Novatec

Guia Mangá. Álgebra Linear. Shin Takahashi, Iroha Inoue e Trend-Pro Co., Ltd. novatec

ADIANTI FRAMEWORK PARA PHP

Análise de Regressão

Pedro Monteiro da Silva Eleutério Marcio Pereira Machado. Novatec

Sérgio de Oliveira. Novatec

A Linguagem de Programação Go

Wellington Figueira da Silva. Novatec

Ademir Cristiano Gabardo. Novatec

Introdução ao GitHub Peter Bell e Brent Beer

Matt Stauffer. Novatec

Roni Antônio Mendes. Novatec

Métricas. Como melhorar os principais resultados de sua empresa. Martin Klubeck. Novatec

Brandon Rhodes John Goerzen

Transcrição:

Miguel Grinberg Novatec

Authorized Portuguese translation of the English edition of Flask Web Development ISBN 9781491991732 2018 Miguel Grinberg. This translation is published and sold by permission of O'Reilly Media, Inc., the owner of all rights to publish and sell the same. Tradução em português autorizada da edição em inglês da obra Flask Web Development ISBN 9781491991732 2018 Miguel Grinberg. Esta tradução é publicada e vendida com a permissão da O'Reilly Media, Inc., detentora de todos os direitos para publicação e venda desta obra. Novatec Editora Ltda. [2018]. Copyright 2018 da Novatec Editora Ltda. 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 A. Kinoshita Revisão gramatical: Smirna Cavalheiro Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-681-0 Histórico de impressões: Junho/2018 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 LIS20180525

Sumário Prefácio...13 Agradecimentos...20 Parte I Introdução ao Flask... 22 Capítulo 1 Instalação...23 Criando o diretório da aplicação... 24 Ambientes virtuais...25 Criando um ambiente virtual com Python 3...25 Criando um ambiente virtual com Python 2...26 Trabalhando com um ambiente virtual...26 Instalando pacotes Python com o pip... 27 Capítulo 2 Estrutura básica da aplicação...29 Inicialização...29 Rotas e funções de view...30 Uma aplicação completa... 31 Servidor web de desenvolvimento... 32 Rotas dinâmicas...33 Modo de depuração...34 Opções da linha de comando...36 Ciclo de requisição-resposta...38 Contextos da aplicação e da requisição...38 Dispatching de requisições...40 O objeto de requisição... 41 Hooks da requisição... 42 Respostas... 43 Extensões do Flask... 45 7

8 Desenvolvimento web com Flask Capítulo 3 Templates...46 Engine de templates Jinja2... 47 Renderizando templates... 47 Variáveis...48 Estruturas de controle...49 Integração do Bootstrap com o Flask-Bootstrap... 52 Páginas de erro personalizadas... 55 Links... 59 Arquivos estáticos... 59 Localização de datas e horas com o Flask-Moment...60 Capítulo 4 Formulários web...64 Configuração...65 Classes de formulário...65 Renderização de HTML em formulários...68 Tratamento de formulário em funções de view... 70 Redirecionamentos e sessões de usuário...73 Apresentação de mensagens flash... 75 Capítulo 5 Bancos de dados...78 Bancos de dados SQL...78 Banco de dados NoSQL...80 SQL ou NoSQL?...80 Frameworks Python para bancos de dados... 81 Gerenciamento de banco de dados com o Flask-SQLAlchemy...82 Definição de modelos...84 Relacionamentos...86 Operações no banco de dados...88 Criando as tabelas...88 Inserindo linhas...89 Modificando linhas... 91 Apagando linhas... 91 Consultando linhas... 91 Uso de banco de dados em funções de view...94 Integração com o shell Python...96 Migrações de banco de dados com o Flask-Migrate...96 Criando um repositório de migração...97 Criando um script para migração...98 Atualizando o banco de dados...99 Adicionando mais migrações... 100

Sumário 9 Capítulo 6 Email... 102 Suporte a emails com o Flask-Mail... 102 Enviando email a partir do shell Python... 104 Integrando emails com a aplicação... 104 Enviando um email assíncrono... 106 Capítulo 7 Estrutura de uma aplicação maior...108 Estrutura do projeto... 108 Opções de configuração... 109 Pacote da aplicação... 112 Usando uma factory de aplicação... 112 Implementando funcionalidades da aplicação em um blueprint... 114 Script da aplicação... 117 Arquivo de requisitos... 118 Testes de unidade... 119 Configuração do banco de dados... 121 Executando a aplicação... 122 Parte II Exemplo: uma aplicação de blogging social...123 Capítulo 8 Autenticação de usuário... 124 Extensões de autenticação para o Flask... 124 Segurança de senhas...125 Hashing de senhas com o Werkzeug...125 Criando um blueprint de autenticação... 129 Autenticação de usuário com o Flask-Login... 130 Preparando o modelo User para logins... 131 Protegendo as rotas... 132 Acrescentando um formulário de login... 133 Fazendo login dos usuários... 135 Fazendo logout dos usuários... 137 Entendendo o funcionamento do Flask-Login... 137 Testando os logins... 139 Cadastro de novos usuários... 140 Acrescentando um formulário para cadastro de usuário... 140 Cadastrando novos usuários... 142 Confirmação da conta... 143 Gerando tokens de confirmação com itsdangerous... 143 Enviando emails de confirmação... 145 Gerenciamento de contas... 150

10 Desenvolvimento web com Flask Capítulo 9 Funções de usuário... 151 Representação das funções de usuário no banco de dados... 151 Atribuição de funções de usuário... 156 Verificação da função do usuário... 156 Capítulo 10 Perfis de usuários... 161 Informações nos perfis... 161 Página de perfil do usuário... 162 Editor de perfil... 165 Editor de perfil no nível de usuário... 165 Editor de perfil no nível administrador... 167 Avatares de usuário... 171 Capítulo 11 Postagens de blog... 176 Submissão e exibição de postagens de blog... 176 Postagens de blog nas páginas de perfil... 179 Paginação de listas longas de postagens... 180 Criando dados de postagem simulados... 181 Renderizando em páginas... 183 Acrescentando um widget de paginação... 184 Postagens com rich text usando o Markdown e o Flask-PageDown... 187 Usando o Flask-PageDown... 188 Lidando com rich text no servidor... 190 Links permanentes para as postagens de blog... 192 Editor de postagem de blog... 193 Capítulo 12 Seguidores... 197 Revisando os relacionamentos no banco de dados... 197 Relacionamentos de muitos-para-muitos... 198 Relacionamentos autorreferenciais...200 Relacionamentos de muitos-para-muitos mais sofisticados... 201 Seguidores na página de perfil... 205 Consultas de postagens seguidas usando uma junção do banco de dados...208 Exibindo as postagens seguidas na página inicial... 211 Capítulo 13 Comentários de usuários... 216 Representação dos comentários no banco de dados... 216 Submissão e exibição de comentários... 218 Moderação dos comentários... 221

Sumário 11 Capítulo 14 Interfaces de Programação de Aplicativos...226 Introdução ao REST...226 Tudo é recurso... 227 Métodos de requisição...228 Corpos da requisição e da resposta... 229 Atribuição de versões...230 Web services RESTful com o Flask... 231 Criando um blueprint para a API... 231 Tratamento de erros... 233 Autenticação de usuário com o Flask-HTTPAuth... 235 Autenticação baseada em token...238 Serializando recursos para JSON e vice-versa... 240 Implementando endpoints de recursos... 243 Paginação de conjuntos grandes de recursos... 246 Testando web services com o HTTPie... 247 Parte III A reta final... 250 Capítulo 15 Testes...251 Obtendo relatórios de cobertura de código... 251 O cliente de testes do Flask... 255 Testando aplicações web... 255 Testando web services...260 Testes fim a fim com o Selenium... 261 Vale a pena testar?... 267 Capítulo 16 Desempenho...268 Fazendo log de consultas de baixo desempenho no banco de dados... 268 Geração de perfil do código-fonte... 270 Capítulo 17 Implantação...272 Fluxo de tarefas para a implantação... 272 Logging de erros durante a execução em produção... 273 Implantação na nuvem... 275 Plataforma Heroku... 275 Preparando a aplicação... 276 Testando com o comando heroku local...285 Fazendo a implantação com git push...286 Implantação de um upgrade...288 Contêineres do Docker...288

12 Desenvolvimento web com Flask Instalando o Docker... 289 Criando uma imagem de contêiner...290 Executando um contêiner... 294 Inspecionando um contêiner em execução... 296 Fazendo o push de sua imagem de contêiner para um registry externo... 296 Usando um banco de dados externo... 297 Coordenação entre contêineres com o Docker Compose... 299 Limpando contêineres e imagens antigos... 303 Usando o Docker em produção...304 Implantações tradicionais... 305 Configuração do servidor... 305 Importando variáveis de ambiente...306 Configurando o logging... 307 Capítulo 18 Recursos adicionais...308 Usando um IDE...308 Encontrando extensões Flask...309 Obtendo ajuda...309 Envolvendo-se com o Flask... 310