SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Mais procurados

Comandos linux
Comandos linuxComandos linux
Comandos linux
Ivani Nascimento
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
Bruno Catão
 
API - Como fazer?
API - Como fazer?API - Como fazer?
API - Como fazer?
Felipe Caparelli
 
Bancos de dados NoSQL: uma visão geral
Bancos de dados NoSQL: uma visão geralBancos de dados NoSQL: uma visão geral
Bancos de dados NoSQL: uma visão geral
Fhabiana Thieli Machado
 
Diferenças entre IPV4 e IPV6
Diferenças entre IPV4 e IPV6Diferenças entre IPV4 e IPV6
Diferenças entre IPV4 e IPV6
José Alyson
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02
thomasdacosta
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
Thiago Freitas
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
Cristiano Pires Martins
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
Carlos Eduardo Kadu
 
Html Básico
Html BásicoHtml Básico
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
Regis Magalhães
 
Introdução CSS
Introdução CSSIntrodução CSS
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
Gabriel Moura
 
Introdução APIs RESTful
Introdução APIs RESTfulIntrodução APIs RESTful
Introdução APIs RESTful
Douglas V. Pasqua
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
Osvaldo Santana Neto
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
Henrique Silvestre Souza
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
Daniel Brandão
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
Daniel Brandão
 
Git e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código FácilGit e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código Fácil
Tiago Antônio da Silva
 
Apresentação sobre ipv6
Apresentação sobre ipv6Apresentação sobre ipv6
Apresentação sobre ipv6
Leandro Rodrigues
 

Mais procurados (20)

Comandos linux
Comandos linuxComandos linux
Comandos linux
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
API - Como fazer?
API - Como fazer?API - Como fazer?
API - Como fazer?
 
Bancos de dados NoSQL: uma visão geral
Bancos de dados NoSQL: uma visão geralBancos de dados NoSQL: uma visão geral
Bancos de dados NoSQL: uma visão geral
 
Diferenças entre IPV4 e IPV6
Diferenças entre IPV4 e IPV6Diferenças entre IPV4 e IPV6
Diferenças entre IPV4 e IPV6
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
Html Básico
Html BásicoHtml Básico
Html Básico
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
 
Introdução CSS
Introdução CSSIntrodução CSS
Introdução CSS
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Introdução APIs RESTful
Introdução APIs RESTfulIntrodução APIs RESTful
Introdução APIs RESTful
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Git e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código FácilGit e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código Fácil
 
Apresentação sobre ipv6
Apresentação sobre ipv6Apresentação sobre ipv6
Apresentação sobre ipv6
 

Semelhante a 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 2011
Flá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 internet
Marcos 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 Petry
Tchelinux
 
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
nitaibezerra
 
Web tools pt-br
Web tools pt-brWeb tools pt-br
Web tools pt-br
Paulo Mattos
 
Django
DjangoDjango
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
Domingos Teruel
 
Web Tools Pt Br
Web Tools Pt BrWeb Tools Pt Br
Web Tools Pt Br
Paulo Mattos
 
Administração de portais
Administração de portaisAdministração de portais
Administração de portais
Felipe 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 Web
Luiz 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 SDK
Ryan Padilha
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
Igor Sobreira
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – Frameworks
Jonata 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 O
fabio.thomaz
 
Com vocês, Django!
Com vocês, Django!Com vocês, Django!
Com vocês, Django!
Marinho Brandão
 
Curso HTML 5 - Aula Inicial
Curso HTML 5 - Aula InicialCurso HTML 5 - Aula Inicial
Curso HTML 5 - Aula Inicial
Tiago Antônio da Silva
 
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
Jeanne Louize Emygdio
 
Introdução à Programação “para Web” de Carlos Bazilio
Introdução à Programação “para Web” de Carlos BazilioIntrodução à Programação “para Web” de Carlos Bazilio
Introdução à Programação “para Web” de Carlos Bazilio
RicardoKratz2
 
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
Jairo 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 Source
Ambiente Livre
 

Semelhante a 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
 
Introdução à Programação “para Web” de Carlos Bazilio
Introdução à Programação “para Web” de Carlos BazilioIntrodução à Programação “para Web” de Carlos Bazilio
Introdução à Programação “para Web” de Carlos Bazilio
 
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
 

Mais de 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 Investidores
Marcos Thomaz
 
Minimax e corte alfa beta
Minimax e corte alfa betaMinimax e corte alfa beta
Minimax e corte alfa beta
Marcos 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ções
Marcos 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 Comandos
Marcos 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
 
Postgre sql +python
Postgre sql +pythonPostgre sql +python
Postgre sql +python
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 banco
Marcos 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 - PostgreSQL
Marcos Thomaz
 
Postgresql +python
Postgresql +pythonPostgresql +python
Postgresql +python
Marcos Thomaz
 

Mais de 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