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

Django - Muito além do básico