SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

La actualidad más candente

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
jesuinoPower
 

La actualidad más candente (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
 

Similar a Django - Muito além do básico

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
Bruno Rocha
 
Ai1415 ad-tp2-g4-a
Ai1415 ad-tp2-g4-aAi1415 ad-tp2-g4-a
Ai1415 ad-tp2-g4-a
mfsmsl
 

Similar a Django - Muito além do básico (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
 

Más de Christiano Anderson

Más de 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 - Muito além do básico