SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Muito além do básico

Christiano Anderson
christiano@christiano.me
http://christiano.me
Twitter: @dump
O que é?

Framework para desenvolvimento web;
● Para quem é perfeccionista com prazos;
● Permite alto raproveitamento de código;
● Escrito em Python;
●
Público alvo

Iniciante

Avançado

Chuck Norris
Também bom para...

Designer

Programador

Suporte/Operação
Django?
Um pouco de história
●

●

●

Criado em 2003 por Adrian Holovaty, Jacob KaplanMoss e Simon Willison;
Objetivo era sites de notícias como ljworld.com,
lawrence.com;
Ganhou popularidade muito rápido;
Django Reinhardt
Django

É um ótimo framework web
Django

NÃO é um CMS
Django

Utiliza princípios de desenvolvimento ágil
Não se Repita!
Recursos
●

Ótimo e poderoso ORM;

●

Segue princípios MVC (ou melhor: MTV);

●

Sistema de templates eficiente;

●

Um ADMIN que já vem integrado;

●

Sistema de cache poderoso;

●

Internacionalização;

●

Testes Unitários;

●

Personalização de middleware em diversos níveis;
E também...
●

Um servidor leve para desenvolvimento;

●

Roteador de URLs;

●

Poderoso sistema de formulários e validações;

●

Internacionalização;

●

Sistema de Geo integrado (GeoDjango);

●

Diversas APIs que podem ser plugadas no projeto;

●

Ótima documentação e uma comunidade fantástica!
●

Models – Django ORM propriamente dito;

●

Templates – Sistema de Templates;

●

Views – Funções em Python;
Persistência dos dados
●

MySQL;

●

PostgreSQL;

●

Oracle;

●

Outros bancos (com aplicação de patches);

●

MongoDB (com aplicação de patches);
Aplicativo

●

Aplicação que executa alguma tarefa específica,
exemplo, django.contrib.humanize
Projeto

●

Conjunto de código, classes e aplicativos para um
determinado objetivo.
Projetos vs Aplicativos

Um projeto é a união de um ou mais aplicativos;
Um aplicativo pode fazer parte de diversos projetos;
Anatomia de um projeto Django
Django ainda mais poderoso
Django Debug Toolbar
Django Debug Toolbar
–

Permite depurar encontrar gargalos e problemas em uma
aplicação Django;

–

Se for corretamente utilizado, pode ser um grande aliado
para deixar sua aplicação com ótima performance
Django Debug Toolbar
Django Debug Toolbar
●

●

No slide anterior é possível identificar gargalos em
queries do banco de dados;
Identificando os locais de gargalo, pode
implementar melhorias ou maneiras diferentes de
acessar esses dados;
Django Extensions
Django Extensions
●

●

Um canivete suíço para quem trabalha com Django;
Possui inúmeras funções que auxiliam o desenvolvedor,
como :
–

Criação de gráfico da sua modelagem;

–

Ferramentas para gerenciar banco de dados;

–

Ferramentas de exportação;

–

shell_plus;

–

runserver_plus;

–

Entre outras
Exemplo Graph Models
Django Compressor
●

●

Gerencia os arquivos estáticos e comprime
JavaScript e CSS em arquivos únicos;
Gera novo arquivo a cada modificação, dessa forma,
evita o cache do navegador;
Django Compressor
Django South (Migrations)
●

●

●

O Models do Django não permite uma atualização
simples das tabelas;
Muitas vezes, quando você adiciona um novo
campo, é necessário fazer um ALTER TABLE na
mão;
O objetivo do South é tornar essa tarefa mais
simples possível
Grappelli Admin Interface
●

●

●

Um novo “skin” para o Admin tradicional do
Django;
Possui várias funcionalidades que deixam o Admin
mais elegante;
Possui conjunto de utilitários e editor WYSIWYG
para facilitar gestão de conteúdo.
Grappelli
Grappelli
Grappelli
GeoDjango
●

●

●

O Django possui uma API para uso de mapas e
cálculos geográficos;
É possível usar o ORM do Django para realizar
funções geográficas;
Hoje na Latinoware, assista minha palestra sobre
GeoDjango! :-)
GeoDjango
Deploy com Gunicorn
Pontos de segurança
Por que é melhor usar:
http://site.com/produto/[0-9]+
ao invés de:
http://site.com/produto/{id}

?
Pontos de segurança
●

Com uma estrutura semelhante a
site.com/produto/{id} você fica vulnerável a SQL
injection

●

Seja o mais rigoroso possível com sua construção de
URLs, além de tornar o projeto mais elegante, você
evita problemas de segurança.
Boas práticas
●

Siga PEP8 e use variáveis legíveis;

●

Trabalhe sempre com o princípio DRY;

●

Trate sempre os dados externos (POST, GET);

●

Prefira sempre trabalhar com Virtualenv;

●

Sempre desabilite o DEBUG em produção;
http://ponycheckup.com/
Onde hospedar?
●

https://www.digitalocean.com/

●

http://linode.com/

●

https://www.webfaction.com/

●

http://aws.amazon.com/
É isso! :-)
Dúvidas? Se não der tempo de responder sua dúvida,
me procure durante o evento ou me chame nas redes
sociais
http://christiano.me
Twitter: @Dump

Weitere ähnliche Inhalte

Was ist angesagt?

Criando websites a jato com Django
Criando websites a jato com DjangoCriando websites a jato com Django
Criando websites a jato com DjangoMarcos Petry
 
Django: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosDjango: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosRodrigo Nossal
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenterPaulino Michelazzo
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Webantonio sérgio nogueira
 
Cya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsCya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsMichael Douglas
 
Domando a irreversibilidade com feature flags
Domando a irreversibilidade com feature flagsDomando a irreversibilidade com feature flags
Domando a irreversibilidade com feature flagsHugo Bessa
 
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensPaulino Michelazzo
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )Michael Douglas
 
Globo.com - Porque amamos open-source?
Globo.com - Porque amamos open-source?Globo.com - Porque amamos open-source?
Globo.com - Porque amamos open-source?Igor Macaubas
 
Programando php com mais segurança
Programando php com mais segurançaProgramando php com mais segurança
Programando php com mais segurançaMichael Douglas
 
Trabalhando de forma profissional com silex
Trabalhando de forma profissional com silexTrabalhando de forma profissional com silex
Trabalhando de forma profissional com silexMichael Douglas
 
Django Channels - Aplicações real time com Django
Django Channels - Aplicações real time com DjangoDjango Channels - Aplicações real time com Django
Django Channels - Aplicações real time com DjangoPaula Grangeiro
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com pythonBruno Rocha
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e DjangoOsvaldo Santana Neto
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyRelsi Maron
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visagejesuinoPower
 
Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Michael Douglas
 

Was ist angesagt? (20)

Criando websites a jato com Django
Criando websites a jato com DjangoCriando websites a jato com Django
Criando websites a jato com Django
 
Django: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosDjango: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutos
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenter
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
 
Python na Web
Python na WebPython na Web
Python na Web
 
Como fazer boas libs
Como fazer boas libs Como fazer boas libs
Como fazer boas libs
 
Cya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsCya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.js
 
Domando a irreversibilidade com feature flags
Domando a irreversibilidade com feature flagsDomando a irreversibilidade com feature flags
Domando a irreversibilidade com feature flags
 
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )
 
Globo.com - Porque amamos open-source?
Globo.com - Porque amamos open-source?Globo.com - Porque amamos open-source?
Globo.com - Porque amamos open-source?
 
Programando php com mais segurança
Programando php com mais segurançaProgramando php com mais segurança
Programando php com mais segurança
 
Trabalhando de forma profissional com silex
Trabalhando de forma profissional com silexTrabalhando de forma profissional com silex
Trabalhando de forma profissional com silex
 
Django Channels - Aplicações real time com Django
Django Channels - Aplicações real time com DjangoDjango Channels - Aplicações real time com Django
Django Channels - Aplicações real time com Django
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com python
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e Django
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visage
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 
Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php
 

Ähnlich wie Django: Um poderoso framework web em Python

Django para portais de alta visibilidade. tdc 2013
Django para portais de alta visibilidade.   tdc 2013Django para portais de alta visibilidade.   tdc 2013
Django para portais de alta visibilidade. tdc 2013Bruno Rocha
 
Customizando a Admin do django
Customizando a Admin do djangoCustomizando a Admin do django
Customizando a Admin do djangoGabriel Freitas
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?Fabio Janiszevski
 
Afinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsAfinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsPatrick Monteiro
 
Overview de Grails: O Java em alta produtividade
Overview de Grails: O Java em alta produtividadeOverview de Grails: O Java em alta produtividade
Overview de Grails: O Java em alta produtividadeCleórbete Santos
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03Ale Uehara
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Valmir Justo
 
Ai1415 ad-tp2-g4-a
Ai1415 ad-tp2-g4-aAi1415 ad-tp2-g4-a
Ai1415 ad-tp2-g4-amfsmsl
 
Web Development em 2015
Web Development em 2015Web Development em 2015
Web Development em 2015Emanuel Santos
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
Zend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoZend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoFlávio Lisboa
 
Performance e otimização no wordpress
Performance e otimização no wordpressPerformance e otimização no wordpress
Performance e otimização no wordpressDaniel Paz
 
[Roadsec23] Dominando Angular com o ChatGPT
[Roadsec23] Dominando Angular com o ChatGPT[Roadsec23] Dominando Angular com o ChatGPT
[Roadsec23] Dominando Angular com o ChatGPTWender Machado
 

Ähnlich wie Django: Um poderoso framework web em Python (20)

Django
DjangoDjango
Django
 
Django para portais de alta visibilidade. tdc 2013
Django para portais de alta visibilidade.   tdc 2013Django para portais de alta visibilidade.   tdc 2013
Django para portais de alta visibilidade. tdc 2013
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Customizando a Admin do django
Customizando a Admin do djangoCustomizando a Admin do django
Customizando a Admin do django
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?
 
Curso de Grails
Curso de GrailsCurso de Grails
Curso de Grails
 
Afinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsAfinal, o que são Single Page Applications
Afinal, o que são Single Page Applications
 
Overview de Grails: O Java em alta produtividade
Overview de Grails: O Java em alta produtividadeOverview de Grails: O Java em alta produtividade
Overview de Grails: O Java em alta produtividade
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03
 
Serverless com python
Serverless com pythonServerless com python
Serverless com python
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 
Ai1415 ad-tp2-g4-a
Ai1415 ad-tp2-g4-aAi1415 ad-tp2-g4-a
Ai1415 ad-tp2-g4-a
 
Web Development em 2015
Web Development em 2015Web Development em 2015
Web Development em 2015
 
Spring boot
Spring bootSpring boot
Spring boot
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
#Moving br workshop
#Moving br workshop#Moving br workshop
#Moving br workshop
 
Zend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoZend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutenção
 
Performance e otimização no wordpress
Performance e otimização no wordpressPerformance e otimização no wordpress
Performance e otimização no wordpress
 
[Roadsec23] Dominando Angular com o ChatGPT
[Roadsec23] Dominando Angular com o ChatGPT[Roadsec23] Dominando Angular com o ChatGPT
[Roadsec23] Dominando Angular com o ChatGPT
 

Mehr von Christiano Anderson

MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16Christiano Anderson
 
Mapeando a Terra com soluções livres e GeoDjango
Mapeando a Terra com soluções livres e GeoDjangoMapeando a Terra com soluções livres e GeoDjango
Mapeando a Terra com soluções livres e GeoDjangoChristiano Anderson
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014Christiano Anderson
 
Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014Christiano Anderson
 
MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014Christiano Anderson
 
Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Christiano Anderson
 
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERI
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERIGeo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERI
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERIChristiano Anderson
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberChristiano Anderson
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Christiano Anderson
 

Mehr von Christiano Anderson (20)

Meetup MUG-RS KingHost
Meetup MUG-RS KingHostMeetup MUG-RS KingHost
Meetup MUG-RS KingHost
 
certificadoTDC2016Floripa
certificadoTDC2016FloripacertificadoTDC2016Floripa
certificadoTDC2016Floripa
 
MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16
 
Mapeando a Terra com soluções livres e GeoDjango
Mapeando a Terra com soluções livres e GeoDjangoMapeando a Terra com soluções livres e GeoDjango
Mapeando a Terra com soluções livres e GeoDjango
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014
 
Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014
 
MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014
 
Big Data Latinoware 2014
Big Data Latinoware 2014Big Data Latinoware 2014
Big Data Latinoware 2014
 
Big Data - Conceitos Básicos
Big Data - Conceitos BásicosBig Data - Conceitos Básicos
Big Data - Conceitos Básicos
 
Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15
 
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERI
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERIGeo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERI
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERI
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saber
 
GeoDjango
GeoDjangoGeoDjango
GeoDjango
 
Palestra nosql
Palestra nosqlPalestra nosql
Palestra nosql
 
Scrum
ScrumScrum
Scrum
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
MongoDB na Campus Party
MongoDB na Campus PartyMongoDB na Campus Party
MongoDB na Campus Party
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7
 
Python MongoDB no MongoSP
Python MongoDB no MongoSPPython MongoDB no MongoSP
Python MongoDB no MongoSP
 
Python e MongoDB - Ensol
Python e MongoDB - EnsolPython e MongoDB - Ensol
Python e MongoDB - Ensol
 

Django: Um poderoso framework web em Python