Desenvolvimento Web com Django 3 Cookbook
Soluções práticas para problemas comuns no desenvolvimento web com Python
Descrição do livro
Django é um framework web para perfeccionistas com prazos de entrega, projetado para ajudar você a criar projetos web gerenciáveis, de médio e grande portes, em um curto período. Esta quarta edição, Desenvolvimento Web com Django 3 Cookbook, foi atualizada com os recursos mais recentes de Django 3 para orientá-lo no processo de desenvolvimento, de modo eficaz.
Este livro sobre Django começa ajudando você a criar um ambiente virtual e a estrutura do projeto para implementar aplicações web com Python. Você aprenderá a criar modelos, views, formulários e templates para suas aplicações web e então integrará JavaScript em suas aplicações Django a fim de acrescentar mais recursos. À medida que avançar, criará sites responsivos para vários idiomas, prontos para serem compartilhados em redes sociais.
O livro orientará você no processo de uploading e processamento de imagens, na renderização de dados em HTML5, PDF e Excel, no uso e na criação de APIs e na navegação por diferentes tipos de dados em Django. Você se tornará um profundo conhecedor das melhores práticas de segurança e de técnicas de caching para aumentar a segurança e a velocidade de seu site. Esta edição o ajudará a trabalhar não só com o banco de dados PostgreSQL, mas também com o MySQL. Há também receitas sofisticadas para usar Django com o Docker e o Ansible nos ambientes de desenvolvimento, staging e produção.
Ao finalizar este livro, você se tornará proficiente no uso dos recursos eficazes de Django e estará preparado para criar sites robustos.
Ver menos ▲Sumário
- Prefácio
- Capítulo
- ■ Introdução a Django 3.0
- Introdução
- Requisitos técnicos
- Trabalhando com um ambiente virtual
- Criando a estrutura de arquivos de um projeto
- Lidando com as dependências do projeto usando o pip
- Configurando parâmetros para os ambientes de desenvolvimento, testes, staging e produção .28 Definindo paths relativos nas configurações
- Lidando com configurações sigilosas
- Incluindo dependências externas em seu projeto
- Configurando STATIC URL dinamicamente
- Configurando UTF-8 como a codificação default na configuração do MySQL
- Criando o arquivo ignore do Git
- Apagando arquivos Python compilados
- Respeitando a ordem das importações nos arquivos Python
- Criando a configuração de uma aplicação
- Definindo configurações de aplicação que podem ser sobrescritas
- Trabalhando com Docker para Django, Gunicorn, Nginx e PostgreSQL
- Capítulo
- ■ Modelos e estrutura do banco de dados
- Introdução
- Requisitos técnicos
- Usando mixins de modelos
- Criando uma mixin de modelo com métodos relacionados a URL
- Criando mixin de modelo para lidar com datas de criação e de modificação
- Criando uma mixin de modelo para cuidar de tags meta
- Criando mixin de modelo para lidar com relacionamentos genéricos
- Lidando com campos para vários idiomas
- Trabalhando com tabelas de tradução de modelos
- Evitando dependências circulares
- Adicionando restrições no banco de dados
- Usando migrações
- Alterando uma chave estrangeira para o campo de muitos para muitos (many-to-many)
- Capítulo
- ■ Formulários e views
- Introdução
- Requisitos técnicos
- Criando uma aplicação com funções CRUDL
- Salvando o autor da instância de um modelo
- Fazendo upload de imagens
- Criando um layout de formulário com templates personalizados
- Criando um layout de formulário com o django-crispy-forms
- Trabalhando com formsets
- Filtrando listas de objetos
- Gerenciando listas com paginação
- Compondo views baseadas em classe
- Disponibilizando dados com Open Graph e Twitter Card
- Disponibilizando vocabulário do schema org
- Gerando documentos PDF
- Implementando pesquisa para vários idiomas com o Haystack e o Whoosh
- Implementando pesquisa para vários idiomas com o Elasticsearch DSL
- Capítulo
- ■ Templates e JavaScript
- Introdução
- Requisitos técnicos
- Organizando o template base html
- Usando o Django Sekizai
- Expondo configurações em JavaScript
- Usando atributos de dados do HTML5
- Disponibilizando imagens responsivas
- Implementando uma rolagem contínua
- Expondo detalhes do objeto em um diálogo modal
- Implementando o widget Like
- Fazendo upload de imagens com o AJax
- Capítulo
- ■ Filtros e tags de template personalizados
- Introdução
- Requisitos técnicos
- Seguindo convenções para seus próprios filtros e tags de template
- Criando um filtro de template para mostrar quantos dias se passaram desde que uma postagem foi publicada
- Criando um filtro de template para extrair o primeiro objeto de mídia
- Criando um filtro de template para humanizar URLs
- Criando tag de template para incluir um template, caso exista
- Criando tag de template para carregar um QuerySet em um template
- Criando tag de template para fazer parse de conteúdo como um template
- Criando tags de template para modificar parâmetros de consulta da requisição
- Sumário
- Capítulo
- ■ Administração de modelos
- Introdução
- Requisitos técnicos
- Personalizando colunas na página de lista para modificação de dados
- Criando inlines que podem ser ordenados
- Criando ações de administração
- Desenvolvendo filtros para listas usadas na modificação de dados
- Modificando o rótulo de uma aplicação de terceiros
- Criando uma aplicação personalizada para contas
- Obtendo Gravatars de usuários
- Inserindo um mapa em um formulário de alteração
- Capítulo
- ■ Segurança e desempenho
- Introdução
- Requisitos técnicos
- Tornando os formulários seguros contra CSRF (Cross-Site Request Forgery, ou Falsificação de Requisições Entre Sites)
- Tornando as requisições seguras com CSP (Content Security Policy, ou Política de Segurança de Conteúdo)
- Usando o django-admin-honeypot
- Implementando validação de senhas
- Fazendo download de arquivos autorizados
- Adicionando uma marca d’água dinâmica nas imagens
- Autenticando-se com o Auth0
- Fazendo caching do valor de retorno de um método
- Usando o Memcached para caching de views de Django
- Usando o Redis para caching de views de Django
- Capítulo
- ■ Estruturas hierárquicas
- Introdução
- Requisitos técnicos
- Criando categorias hierárquicas com o django-mptt
- Criando uma interface de admin de categorias com o django-mptt-admin
- Renderizando categorias em um template com o django-mptt
- Usando um campo de seleção única para escolher uma categoria nos formulários, com o django-mptt
- Usando uma lista de seleção para escolher várias categorias nos formulários, com o django-mptt
- Criando categorias hierárquicas com o django-treebeard
- Criando uma interface básica para administração de categorias com o django-treebeard
- Capítulo
- ■ Importação e exportação de dados
- Introdução
- Requisitos técnicos
- Importando dados de um arquivo CSV local
- Importando dados de um arquivo Excel local
- Importando dados de um arquivo JSON externo
- Importando dados de um arquivo XML externo
- Preparando mapas de site com paginação para ferramentas de pesquisa
- Criando feeds RSS que podem ser filtrados
- Usando o framework Django REST para criar uma API
- Capítulo
- ■ Complementos
- Introdução
- Requisitos técnicos
- Usando o shell de Django
- Usando expressões de consulta no banco de dados
- Fazendo um monkey patch na função slugify() para melhor suporte à internacionalização .466 Alternando a barra de ferramentas de Debug
- Usando o ThreadLocalMiddleware
- Sinais para notificar os administradores a respeito de novas entradas
- Verificando configurações ausentes
- Capítulo
- ■ Testes
- Introdução
- Requisitos técnicos
- Testando views com simulação
- Testando a interface de usuário com o Selenium
- Testando APIs criadas com o framework Django REST
- Garantindo a cobertura dos testes
- Capítulo
- ■ Implantação
- Introdução
- Requisitos técnicos
- Lançando uma aplicação Django reutilizável
- Implantando no ambiente de staging usando Apache com mod wsgi
- Implantando no ambiente de produção usando Apache com mod wsgi
- Implantando no ambiente de staging com Nginx e Gunicorn
- Implantando no ambiente de produção com Nginx e Gunicorn
- Sumário
- Capítulo
- ■ Manutenção
- Introdução
- Requisitos técnicos
- Criando e restaurando backups do banco de dados MySQL
- Criando e restaurando backups do banco de dados PostgreSQL
- Configurando cron jobs para tarefas regulares
- Fazendo log de eventos para futura inspeção
- Obtendo informações de erro detalhadas por email
Sobre os autores
Aidas Bendoraitis cria sites profissionalmente há 18 anos. Nos últimos 14 anos, tem trabalhado em uma empresa de design, a studio 38 pure communication, em Berlim. Com uma pequena equipe dedicada, faz uso principalmente de Django no backend e da jQuery no frontend para criar plataformas web nas áreas de cultura e turismo. Entre seus diferentes projetos… Ver perfil completo ▶
Jake Kronika é engenheiro de software e tem 25 anos de experiência. Trabalha com Python desde 2005 e com Django desde 2007. Tem acompanhado de perto a evolução do mercado de desenvolvimento web, e seu conjunto de habilidades inclui HTML, CSS, JavaScript full-stack, Python, Django, React, Node.js, Ruby on Rails e várias outras tecnologias. Atualmente,… Ver perfil completo ▶






