SlideShare a Scribd company logo
1 of 45
Data: 04 de dezembro de 2014
Marcos Thomaz da Silva
Conhecendo
Django
• Criado por Jacob Kaplan Moss e Adrian Holovaty
• Lançado em 2003
• Django Reinhardt
• Atualmente na versão 1.7.1
Mas o que é Django???
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”
O que o Django NÃO é?
• Não é um CMS
• Não é uma biblioteca
• Não é um “programa”
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
• Python, quem usa?
Características do Django
• Multiplataforma
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
E agora?
Será que esse tal Django atende a
todos estes requisitos?
Recursos do .
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 – Servidores Web/
Aplicações
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 - ORM
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 – Templates
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 – URL’s
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
Recursos do Django - Admin
Recursos do Django - Admin
Recursos do Django - Admin
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
Não contavam com minha
astúcia!
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/
Estrutura das Requisições no Django
Pequeno Trecho de Código
• Modelo (Banco de Dados)
Pequeno Trecho de Código
• Views (camada de Controle / Controller)
Pequeno Trecho de Código
• Template (Camada de Visualização) – base.html
Pequeno Trecho de Código
• Template (Camada de Visualização) –
mensagem.html
Pequeno Trecho de Código
• Template (Camada de Visualização) – Resultado
Pequeno Trecho de Código
• Template (Camada de Visualização) – Resultado
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
Muito Obrigado
marcosthomazs@gmail.com

More Related Content

What's hot

Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
Aula 01 - JavaScript: Introdução
Aula 01 - JavaScript: IntroduçãoAula 01 - JavaScript: Introdução
Aula 01 - JavaScript: IntroduçãoJessyka Lage
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareÁlvaro Farias Pinheiro
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução BásicaChristian Perone
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidJosé Alexandre Macedo
 
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Matheus Espanhol
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Daniel Brandão
 
Recursividade em linguagem C
Recursividade em linguagem CRecursividade em linguagem C
Recursividade em linguagem CLeonardo Lima
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaDaniel Brandão
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitoselliando dias
 
Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006Luís Fernando Richter
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosFrederico Madeira
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de ProgramaçãoManuel Menezes de Sequeira
 

What's hot (20)

Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Aula 01 - JavaScript: Introdução
Aula 01 - JavaScript: IntroduçãoAula 01 - JavaScript: Introdução
Aula 01 - JavaScript: Introdução
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de Software
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Aula 2 - Processos de Software
Aula 2 - Processos de SoftwareAula 2 - Processos de Software
Aula 2 - Processos de Software
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento Android
 
Aula orientação a objetos
Aula orientação a objetosAula orientação a objetos
Aula orientação a objetos
 
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
 
Introdução ao MySQL
Introdução ao MySQLIntrodução ao MySQL
Introdução ao MySQL
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
Recursividade em linguagem C
Recursividade em linguagem CRecursividade em linguagem C
Recursividade em linguagem C
 
Estruturas de dados
Estruturas de dadosEstruturas de dados
Estruturas de dados
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitos
 
Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006
 
Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas Distribuidos
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação
 
Padrões MVC
Padrões MVCPadrões MVC
Padrões MVC
 

Similar to Conhecendo o Django

Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Flávio Lisboa
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetMarcos Petry
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel PetryTchelinux
 
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAOficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAnitaibezerra
 
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User Interface
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User InterfaceDesenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User Interface
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User InterfaceDomingos Teruel
 
Administração de portais
Administração de portaisAdministração de portais
Administração de portaisFelipe Perin
 
Técnicas de Programação para a Web
Técnicas de Programação para a WebTécnicas de Programação para a Web
Técnicas de Programação para a WebLuiz Cláudio Silva
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksJonata Weber
 
F R A M E W O R K D J A N G O
F R A M E W O R K  D J A N G OF R A M E W O R K  D J A N G O
F R A M E W O R K D J A N G Ofabio.thomaz
 
Justificativas para adoção de um Sistema de Gerenciamento de Conteúdos na FAI
Justificativas para adoção de um Sistema de Gerenciamento de Conteúdos na FAIJustificativas para adoção de um Sistema de Gerenciamento de Conteúdos na FAI
Justificativas para adoção de um Sistema de Gerenciamento de Conteúdos na FAIJeanne Louize Emygdio
 
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações WebFrameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações WebJairo Junior
 
Alfresco ECM e Gestão Eletrônica de Documentos Open Source
Alfresco ECM e Gestão Eletrônica de Documentos Open SourceAlfresco ECM e Gestão Eletrônica de Documentos Open Source
Alfresco ECM e Gestão Eletrônica de Documentos Open SourceAmbiente Livre
 

Similar to Conhecendo o Django (20)

Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internet
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
 
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAOficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
 
Web tools pt-br
Web tools pt-brWeb tools pt-br
Web tools pt-br
 
Django
DjangoDjango
Django
 
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User Interface
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User InterfaceDesenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User Interface
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User Interface
 
Web Tools Pt Br
Web Tools Pt BrWeb Tools Pt Br
Web Tools Pt Br
 
Administração de portais
Administração de portaisAdministração de portais
Administração de portais
 
Técnicas de Programação para a Web
Técnicas de Programação para a WebTécnicas de Programação para a Web
Técnicas de Programação para a Web
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – Frameworks
 
F R A M E W O R K D J A N G O
F R A M E W O R K  D J A N G OF R A M E W O R K  D J A N G O
F R A M E W O R K D J A N G O
 
Com vocês, Django!
Com vocês, Django!Com vocês, Django!
Com vocês, Django!
 
Curso HTML 5 - Aula Inicial
Curso HTML 5 - Aula InicialCurso HTML 5 - Aula Inicial
Curso HTML 5 - Aula Inicial
 
Justificativas para adoção de um Sistema de Gerenciamento de Conteúdos na FAI
Justificativas para adoção de um Sistema de Gerenciamento de Conteúdos na FAIJustificativas para adoção de um Sistema de Gerenciamento de Conteúdos na FAI
Justificativas para adoção de um Sistema de Gerenciamento de Conteúdos na FAI
 
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações WebFrameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
 
Alfresco ECM e Gestão Eletrônica de Documentos Open Source
Alfresco ECM e Gestão Eletrônica de Documentos Open SourceAlfresco ECM e Gestão Eletrônica de Documentos Open Source
Alfresco ECM e Gestão Eletrônica de Documentos Open Source
 
PHP 10 CodeIgniter
PHP 10 CodeIgniterPHP 10 CodeIgniter
PHP 10 CodeIgniter
 

More from Marcos Thomaz

Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...
Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...
Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...Marcos Thomaz
 
Hydros - Apresentação para Investidores
Hydros - Apresentação para InvestidoresHydros - Apresentação para Investidores
Hydros - Apresentação para InvestidoresMarcos Thomaz
 
Minimax e corte alfa beta
Minimax e corte alfa betaMinimax e corte alfa beta
Minimax e corte alfa betaMarcos Thomaz
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesMarcos Thomaz
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosMarcos Thomaz
 
MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento Marcos Thomaz
 
Criação de log de ações através do banco
Criação de log de ações através do bancoCriação de log de ações através do banco
Criação de log de ações através do bancoMarcos Thomaz
 
Criação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQLCriação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQLMarcos Thomaz
 

More from Marcos Thomaz (10)

Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...
Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...
Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...
 
Hydros - Apresentação para Investidores
Hydros - Apresentação para InvestidoresHydros - Apresentação para Investidores
Hydros - Apresentação para Investidores
 
Minimax e corte alfa beta
Minimax e corte alfa betaMinimax e corte alfa beta
Minimax e corte alfa beta
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas Aplicações
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos Comandos
 
MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento
 
Postgre sql +python
Postgre sql +pythonPostgre sql +python
Postgre sql +python
 
Criação de log de ações através do banco
Criação de log de ações através do bancoCriação de log de ações através do banco
Criação de log de ações através do banco
 
Criação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQLCriação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQL
 
Postgresql +python
Postgresql +pythonPostgresql +python
Postgresql +python
 

Conhecendo o Django

  • 1. Data: 04 de dezembro de 2014 Marcos Thomaz da Silva Conhecendo
  • 2. Django • Criado por Jacob Kaplan Moss e Adrian Holovaty • Lançado em 2003 • Django Reinhardt • Atualmente na versão 1.7.1
  • 3. Mas o que é Django???
  • 4. 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”
  • 5. O que o Django NÃO é? • Não é um CMS • Não é uma biblioteca • Não é um “programa”
  • 6. 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
  • 9. 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
  • 10. O que preciso saber... • Pequenas Aplicações: – Conjunto HTML / CSS / Javascript – Servidor Web / Aplicações – Formulários e Validação – Persistência de Dados
  • 11. • 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
  • 12. E agora? Será que esse tal Django atende a todos estes requisitos?
  • 14. 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
  • 15. 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
  • 16. Recursos do Django – Servidores Web/ Aplicações
  • 17. 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
  • 18. 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
  • 20. 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
  • 21. Recursos do Django – Templates
  • 22. 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
  • 23. Recursos do Django – URL’s
  • 24. 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
  • 25. 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
  • 26. Recursos do Django • Módulos de Testes e Metodologias Ágeis – TDD – Test Driven Development – BDD – Behavior Driven Development
  • 27. Recursos do Django • Módulos Ajax para aplicações Ricas • Editores WYSIWYG • Web Components • API’s Rest e SOAP
  • 28. Recursos do Django • Cache – Em memória – Em arquivos – Em bancos de dados (Relacionais e NoSQL) – Por Requisição – Por Consulta – Por Página
  • 29. 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
  • 33. 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
  • 34. 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
  • 35. Não contavam com minha astúcia!
  • 36. 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/
  • 38. Pequeno Trecho de Código • Modelo (Banco de Dados)
  • 39. Pequeno Trecho de Código • Views (camada de Controle / Controller)
  • 40. Pequeno Trecho de Código • Template (Camada de Visualização) – base.html
  • 41. Pequeno Trecho de Código • Template (Camada de Visualização) – mensagem.html
  • 42. Pequeno Trecho de Código • Template (Camada de Visualização) – Resultado
  • 43. Pequeno Trecho de Código • Template (Camada de Visualização) – Resultado
  • 44. 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