Django - Muito além do básico

download Django - Muito além do básico

If you can't read please download the document

Transcript of Django - Muito além do básico

Django - Muito alm do bsico

Muito alm do bsico

Christiano [email protected]://christiano.meTwitter: @dump

O que ?

Framework para desenvolvimento web;

Para quem perfeccionista com prazos;

Permite alto raproveitamento de cdigo;

Escrito em Python;

Pblico alvo

Iniciante

Avanado

Chuck Norris

Tambm bom para...

Designer

Programador

Suporte/Operao

Django?

Um pouco de histria

Criado em 2003 por Adrian Holovaty, Jacob Kaplan-Moss e Simon Willison;

Objetivo era sites de notcias como ljworld.com, lawrence.com;

Ganhou popularidade muito rpido;

Django Reinhardt

Django

um timo framework web

Django

NO um CMS

Django

Utiliza princpios de desenvolvimento gil

No se Repita!

Recursos

timo e poderoso ORM;

Segue princpios MVC (ou melhor: MTV);

Sistema de templates eficiente;

Um ADMIN que j vem integrado;

Sistema de cache poderoso;

Internacionalizao;

Testes Unitrios;

Personalizao de middleware em diversos nveis;

E tambm...

Um servidor leve para desenvolvimento;

Roteador de URLs;

Poderoso sistema de formulrios e validaes;

Internacionalizao;

Sistema de Geo integrado (GeoDjango);

Diversas APIs que podem ser plugadas no projeto;

tima documentao e uma comunidade fantstica!

Models Django ORM propriamente dito;

Templates Sistema de Templates;

Views Funes em Python;

Persistncia dos dados

MySQL;

PostgreSQL;

Oracle;

Outros bancos (com aplicao de patches);

MongoDB (com aplicao de patches);

Aplicativo

Aplicao que executa alguma tarefa especfica, exemplo, django.contrib.humanize

Projeto

Conjunto de cdigo, classes e aplicativos para um determinado objetivo.

Projetos vs Aplicativos

Um projeto a unio 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 aplicao Django;

Se for corretamente utilizado, pode ser um grande aliado para deixar sua aplicao com tima performance

Django Debug Toolbar

Django Debug Toolbar

No slide anterior possvel 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 suo para quem trabalha com Django;

Possui inmeras funes que auxiliam o desenvolvedor, como :Criao de grfico da sua modelagem;

Ferramentas para gerenciar banco de dados;

Ferramentas de exportao;

shell_plus;

runserver_plus;

Entre outras

Exemplo Graph Models

Django Compressor

Gerencia os arquivos estticos e comprime JavaScript e CSS em arquivos nicos;

Gera novo arquivo a cada modificao, dessa forma, evita o cache do navegador;

Django Compressor

Django South (Migrations)

O Models do Django no permite uma atualizao simples das tabelas;

Muitas vezes, quando voc adiciona um novo campo, necessrio fazer um ALTER TABLE na mo;

O objetivo do South tornar essa tarefa mais simples possvel

Grappelli Admin Interface

Um novo skin para o Admin tradicional do Django;

Possui vrias funcionalidades que deixam o Admin mais elegante;

Possui conjunto de utilitrios e editor WYSIWYG para facilitar gesto de contedo.

Grappelli

Grappelli

Grappelli

GeoDjango

O Django possui uma API para uso de mapas e clculos geogrficos;

possvel usar o ORM do Django para realizar funes geogrficas;

Hoje na Latinoware, assista minha palestra sobre GeoDjango! :-)

GeoDjango

Deploy com Gunicorn

Pontos de segurana

Por que melhor usar:http://site.com/produto/[0-9]+ao invs de:http://site.com/produto/{id}

?

Pontos de segurana

Com uma estrutura semelhante a site.com/produto/{id} voc fica vulnervel a SQL injection

Seja o mais rigoroso possvel com sua construo de URLs, alm de tornar o projeto mais elegante, voc evita problemas de segurana.

Boas prticas

Siga PEP8 e use variveis legveis;

Trabalhe sempre com o princpio DRY;

Trate sempre os dados externos (POST, GET);

Prefira sempre trabalhar com Virtualenv;

Sempre desabilite o DEBUG em produo;

http://ponycheckup.com/

Onde hospedar?

https://www.digitalocean.com/

http://linode.com/

https://www.webfaction.com/

http://aws.amazon.com/

isso! :-)

Dvidas? Se no der tempo de responder sua dvida, me procure durante o evento ou me chame nas redes sociais

http://christiano.meTwitter: @Dump