Django - Muito além do básico

5.257 visualizações

Publicada em

Uma breve introdução ao framework Django, apresentação da Latinoware 2013

Publicada em: Tecnologia

Django - Muito além do básico

  1. 1. Muito além do básico Christiano Anderson christiano@christiano.me http://christiano.me Twitter: @dump
  2. 2. O que é? Framework para desenvolvimento web; ● Para quem é perfeccionista com prazos; ● Permite alto raproveitamento de código; ● Escrito em Python; ●
  3. 3. Público alvo Iniciante Avançado Chuck Norris
  4. 4. Também bom para... Designer Programador Suporte/Operação
  5. 5. Django?
  6. 6. 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;
  7. 7. Django Reinhardt
  8. 8. Django É um ótimo framework web
  9. 9. Django NÃO é um CMS
  10. 10. Django Utiliza princípios de desenvolvimento ágil
  11. 11. Não se Repita!
  12. 12. 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;
  13. 13. 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!
  14. 14. ● Models – Django ORM propriamente dito; ● Templates – Sistema de Templates; ● Views – Funções em Python;
  15. 15. Persistência dos dados ● MySQL; ● PostgreSQL; ● Oracle; ● Outros bancos (com aplicação de patches); ● MongoDB (com aplicação de patches);
  16. 16. Aplicativo ● Aplicação que executa alguma tarefa específica, exemplo, django.contrib.humanize
  17. 17. Projeto ● Conjunto de código, classes e aplicativos para um determinado objetivo.
  18. 18. Projetos vs Aplicativos Um projeto é a união de um ou mais aplicativos; Um aplicativo pode fazer parte de diversos projetos;
  19. 19. Anatomia de um projeto Django
  20. 20. Django ainda mais poderoso
  21. 21. Django Debug Toolbar
  22. 22. 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
  23. 23. Django Debug Toolbar
  24. 24. 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;
  25. 25. Django Extensions
  26. 26. 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
  27. 27. Exemplo Graph Models
  28. 28. 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;
  29. 29. Django Compressor
  30. 30. 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
  31. 31. 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.
  32. 32. Grappelli
  33. 33. Grappelli
  34. 34. Grappelli
  35. 35. 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! :-)
  36. 36. GeoDjango
  37. 37. Deploy com Gunicorn
  38. 38. Pontos de segurança Por que é melhor usar: http://site.com/produto/[0-9]+ ao invés de: http://site.com/produto/{id} ?
  39. 39. 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.
  40. 40. 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;
  41. 41. http://ponycheckup.com/
  42. 42. Onde hospedar? ● https://www.digitalocean.com/ ● http://linode.com/ ● https://www.webfaction.com/ ● http://aws.amazon.com/
  43. 43. É 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

×