Django - Desenvolvimento web ágil com Python

13.423 visualizações

Publicada em

Visão geral do framework web Django.

Publicada em: Tecnologia

Django - Desenvolvimento web ágil com Python

  1. 1. Django Desenvolvimento web ágil com Python Igor Sobreira www.igorsobreira.com
  2. 2. Quem sou eu Me chamo Igor Sobreira Faço TSI no IFPB (antigo CEFET-PB) Programo em Python a uns 3, 4 anos Trabalho com Django na Smart Nuts Technology (www.smartnutstechnology.com) Velejo de windsurf (quando dá...)
  3. 3. O mini-projeto relativo aos slides está em: http://igorsobreira.com/sitemedia/ensol.zip
  4. 4. O que é Django?
  5. 5. Não é Jungle. É Django.
  6. 6. Não é Django Reinhardt ... na verdade é
  7. 7. • Framework web, escrito em Python • Focado em desenvilmento ágil • “Nós fazemos a parte repetitiva, você faz o que interessa”
  8. 8. Django é Python!
  9. 9. • Tipagem dinâmica e forte • Orientada a Objetos (multiparadigma) • Fácil de aprender • “Pouco é muito” • Baterias inclusas • Extensível • Preza pela beleza do
  10. 10. DRY Don’t Repeat Yourself http://www.flickr.com/photos/plinton/215437652/
  11. 11. Projeto & Aplicações
  12. 12. Projeto: http://ensol.org.br trabalhos contato inscrições admin usuários paginas
  13. 13. Projeto Apps externas tagging trabalhos mailer inscrições photogallery django.contrib admin auth flatpages gis ...
  14. 14. Caminho de uma requisição
  15. 15. Middleware Fica no “meio do caminho” process_request process_response Manipular o request e/ou o response de maneira transparente Alguns disponíveis G-Zip GET Condicional
  16. 16. Escute os sinais Seja notificado quando algum evento ocorrer. Sinais relacionados a request, models. E os seus.
  17. 17. E isso é MVC? • Onde estão os Controllers? • O que as “views” estão fazendo ali?
  18. 18. Alguns chamam
  19. 19. Criando um projeto
  20. 20. $ django-admin.py startproject ensol
  21. 21. settings.py é Python, por favor, tudo menos XML! http://www.flickr.com/photos/willpate/63814657/
  22. 22. • Você precisa de um Servidor Web • O django tem um, para desenvolvimento • Não use em produção.
  23. 23. Aplicações Deve fazer uma coisa, e fazer direito Se a descrição de sua aplicação for maior que uma linha, talvez ela precise ser quebrada Reutilizável (DRY lembra?) Talvez já exista!
  24. 24. $ python manage.py startapp trabalhos A aplicação é auto-contida tests.py urls.py templates/ admin.py
  25. 25. Instalando a aplicação settings.py
  26. 26. Modelo de Dados models.py
  27. 27. Esqueça SQL! Nós temos objetos, e queremos persistí-los É preciso um mapeamento entre classes/objetos e tabelas/linhas ORM!
  28. 28. Eu crio classes e objetos em Python
  29. 29. O ORM converte para SQL
  30. 30. E com suporte a vários bancos! PostgreSQL, MySQL, SQLite e Oracle settings.py
  31. 31. $ python manage.py syncdb Cria as tabelas no banco. E pronto.
  32. 32. Alterei minha classe ... O syncdb não atualiza Use SQL na unha Ou aplicações externas: south desed django-evolution yasdel
  33. 33. E como eu salvo e manipulo meus modelos?
  34. 34. Eu criei esse usuário no primeiro syncdb, lembra?
  35. 35. Interface Administrativa
  36. 36. O famoso CRUD Trabalhoso Chato Repetitivo Ops. DRY, lembra?
  37. 37. O django já fez pra você Ele conhece seus models, então ele sabe o que você quer editar Uma aplicação do django.contrib Mesmo que não use em produção, é útil no desenvolvimento O admin não é sua aplicação!
  38. 38. Só precisa registrar o seu model Instale a aplicação Habilite a URL E rode o syncdb
  39. 39. Mapeando ações para cada URL urls.py e views.py
  40. 40. /Main#PhotoTag.aspxrl=mo&uid=4504979850246063103
  41. 41. /crime/by-place/24/by-primary-type/narcotics/ /blog/2009/4/15/estruturas-de-dados-do-django/ Estamos na fase de URLs amigáveis
  42. 42. URLs são regexs
  43. 43. Views recebem um HttpRequest, e parâmetros de URL retorna um HttpResponse
  44. 44. Templates
  45. 45. O que é? Uma maneira mais poderosa de gerar strings Não necessariamente HTML Nem precisa ser usado como resposta HTTP Permite loops e condicionais, além de variáveis
  46. 46. {% for elemento in coleção %} {% endfor %} {% if algo %} ... {% else %} ... {% endif %} {{ variável }} {{ variável|filtro }}
  47. 47. Herança de templates
  48. 48. base.html topo page.html (extends base.html) block conteúdo menu (vazio) block conteúdo Aqui vai o conteúdo real rodapé endblock
  49. 49. Cadê meu include? Já era. Nova maneira de pensar. :-) Mas não é o fim do mundo. Existe uma tag {% include %} Porém use com moderação. Herança é bem mais flexível
  50. 50. O que mais?
  51. 51. Formulários Fácil criação de formulários, totalmente OO Traz validação e renderização dos campos hooks para validação customizada Formulários para Models Form, ModelForm, FormWizard, FormPreview, formsets
  52. 52. Testes automizados doctests e unit tests fixtures test runner test client teste de envio de emails
  53. 53. Cache Onde? Como? Memcached Por site Banco de Dados Por view Arquivos Por bloco de template Memória local Sob demanda
  54. 54. Feeds RSS e Atom Outras alternativas ao seu conteúdo. Extenda a classe Feed Sobrescreva alguns métodos/atributos title, link, description, items, etc ... Diga o tipo (RSS ou Atom) Publique sob uma url.
  55. 55. Sitemaps Seja amigo dos bots de busca Extenda a class Sitemap Sobrescreva alguns métodos/atributos changefreq, priority, items, lastmod, ... Publique sob uma url.
  56. 56. Cadê o AJAX?
  57. 57. Django é um framework de backend, não traz código javascript Ele faz a parte de backend (JSON, XML, YAML) Serializa Desserializa
  58. 58. Aplicações do contrib comments formtools Content Types markup localflavor sites flatpages redirects gis databrowse
  59. 59. i18n Suporte a internacionalização O admin já vem traduzido em pt_BR
  60. 60. Seguraça SQL Injection Cross-Site Scripting (XSS) Cross-Site Request Forgery (CSRF) E-Mail Header Injection DEBUG = False em produção
  61. 61. Deployment WSGI Também ... Apache + mod_wsgi Apache + mod_python nginx CGI lighttpd FastCGI Twisted.web2 prefira WSGI CherryPy
  62. 62. Quem tá usando?
  63. 63. vericia.com
  64. 64. everyblock.com
  65. 65. jaiku.com
  66. 66. ucsvirtual.ucs.br
  67. 67. A globo.com usa Django para diversas aplicações
  68. 68. Documentação docs.djangoproject.com docs.djangobrasil.org (Projeto de tradução. Ajude!) djangobook.com
  69. 69. Comunidade djangoproject.com - site oficial djangobrasil.org - site oficial nacional djangogigs.com - vagas de empregro djangopeople.net - rede social djangosites.org - rede social de sites em django djangosearch.com - busca assuntos relacionados djangocodesearch.com - busca nos fontes
  70. 70. Comunidade Google Grupos django-brasil - 1014 django-users - 14289 IRC #django-br #django grupypb.net - Python na Paraíba
  71. 71. Obrigado. Dúvidas? Igor Sobreira http://igorsobreira.com

×