Django
• Criado por Jacob Kaplan Moss e Adrian Holovaty
• Lançado em 2003
• Django Reinhardt
• Atualmente na versão 1.7.1
O que é Django?
• Framework Web de alto nível
“Um framework (ou arcabouço) em desenvolvimento de software, é uma abstração que une códigos comuns entre vários projetos de software provendo uma funcionalidade genérica”.
Fayad e Schmidt
“Frameworks são projetados com a intenção de facilitar o desenvolvimento de software, habilitando designers e programadores a gastarem mais tempo determinando as exigências do software do que com detalhes de baixo nível do sistema”
Características do Django
• Desenvolvido em Python– Criada por Guido van Rossun
– Lançada em 1991
– Linguagem de Alto Nível
– Interpretada e Interativa
– Gera Bytecodes
– Produtividade e Manutenção de Código
– Multiplataforma (nativa Linux)
– Multiparadigma (procedural, OO, funcional)
– Open Source
– Monty Python Flying Circus
O que mais
• Focado no desenvolvimento ágil
• Conceito DRY – Don’t Repeat Yourself
• Plugabilidade
• MTV / MVC
• Automatização de Tarefas
• Foco no Negócio
• Open Source
O que preciso saber...
• Pequenas Aplicações:
– Conjunto HTML / CSS / Javascript
– Servidor Web / Aplicações
– Formulários e Validação
– Persistência de Dados
• Médias e Grandes Aplicações:
– Engine de templates
– Mapeador de URL’s
– Controle de Sessões
– Autenticação
– Testes e Metodologias Ágeis
– Cache
– Ajax
Recursos do Django
• Arquivo Centralizado de Configurações
– Ativação de Ambiente de Depuração
– “Plugins” vinculados
– Conexão com Banco de Dados
– Módulos Intermediários
– Idioma
Recursos do Django
• Servidor web embutido;
• Módulos para Deploy nos principais servidores Web
– mod_python
– WSGI /mod_wsgi
– FastCGI
– SCGI - Simple Common Gateway Interface
– AJP - Apache JServ Protocol / Tomcat
Recursos do Django
• Módulo completo de formulários
– Geração automática baseada em modelos
– Validação centralizada
– Integração com banco de dados
Recursos do Django
• ORM (Mapeamento Objeto Relacional)
– Geração de Banco de Dados
– Engenharia Reversa de Banco
– Migrations
– Diversos Bancos de Dados (PostgreSQL, MySQL, Oracle, SQLite, DB2, SQLServer, Firebird/Interbase)
– Conexões Multibancos
Recursos do Django
• Sistema completo de Templates
– Sistema Próprio de Templates
– Integração com Outros Motores de Templates
– Separação de Regras de Negócio e Templates
– Tags, Filtros e Funções Especiais
– Possibilidade de Extensão de Filtros e Funções
Recursos do Django
• Mapeador de URL’s (URL Dispatcher)
– URL’s Limpas e Elegantes
– Definição de URL’s
– Utilização de Expressões Regulares
– Mapeamento de URL’s por Módulo
Recursos do Django
• Gerenciamento Completo de Sessões
– Em arquivo
– Em bancos de dados relacional
– Em banco de dados especial (redis/memcached)
– Controle de expiração de sessões
• Ao fechar o navegador
• Nunca
• Data específica
Recursos do Django
• Módulo completo de Autenticação
– Módulo embutido de autenticação
– Possibilidade de Extensão de Modelo de Usuários
– Integração dom Facebook, Twitter, Google+
– Bases LDAP / Active Directory
– Recuperação de Senhas
Recursos do Django
• Módulos de Testes e Metodologias Ágeis
– TDD – Test Driven Development
– BDD – Behavior Driven Development
Recursos do Django
• Módulos Ajax para aplicações Ricas
• Editores WYSIWYG
• Web Components
• API’s Rest e SOAP
Recursos do Django
• Cache
– Em memória
– Em arquivos
– Em bancos de dados (Relacionais e NoSQL)
– Por Requisição
– Por Consulta
– Por Página
Recursos do Django
• Interface Administrativa - Admin
– Aplicação Plugável
– Interface e estruturas criadas (quase) automaticamente
– Possibilidade de Personalização
– Pequenos sistemas e backends em minutos
– Excelente produtividade
– Motivo de Confusão: Django = Programa
E mais
• Criação de Log de Aplicações
• Internacionalização
• Criação Automática de Sitemaps
• Integração com Redes Sociais
• Herança de Modelos
• Geoprocessamento (GeoDjango)
• Recursos de Performance
• Envio de Emails
E ainda mais
• Geração de Feed de Notícias (RSS/Atom)
• Paginação
• Módulo de Mensagens
• Serializações (XML, JSON, YAML)
• Arquivos Estáticos
• Signals
• Generic Relations
• Comunidade Brasileira Participativa
• Muito Material na Internet
• Excelente Documentação
Lista de Sites Úteis Relacionados
• Site Oficial da Linguagem Python: https://www.python.org/
• Site Oficial do Framework Django: https://www.djangoproject.com/
• Lista de Sites Feitos usando Django: https://www.djangosites.org/
• Site com lista de diversas Aplicações Plugáves (Plugins) para o Django: • https://www.djangopackages.com/packages/p/django-pluggables/
• Github – Projetos e Aplicações Plugáveis Django: https://github.com/search?q=django
• Site de Depoimentos do Porque Usar Django: https://ericstk.wordpress.com/2014/03/17/por-que-escolher-django/
• Grupo Python Acre no Facebook (Ainda Iniciando): https://www.facebook.com/groups/1504095973195084/
O que fazer com Django?
• Sites
• Aplicações Web
• Serviços Web
• API’s
• Globo é um dos cases de sucesso : – 45 milhões de acesso/dia
– 32 mil acessos / minuto
– 10 milhões de visitantes únicos / dia