Django: desenvolvendo aplicações web de maneira simples e rápida!

4,306 views

Published on

Minicurso ministrado na III Jornada Acadêmica de Informática - JAINF

Published in: Technology
1 Comment
5 Likes
Statistics
Notes
  • Teu Blog ta off mesmo?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
4,306
On SlideShare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
135
Comments
1
Likes
5
Embeds 0
No embeds

No notes for slide

Django: desenvolvendo aplicações web de maneira simples e rápida!

  1. 1. Django Desenvolvendo aplicações web de maneira simples e rápida! Felipe B. Queiroz felipe.buarque@gmail.com III Jornada Acadêmica de Informática - JAINF Novembro de 2010 1 / 42
  2. 2. Quem sou eu? Felipe Buarque (wally) Mestrando pela UFPE Entusiasta de software livre Entusiasta da linguagem Python Blog: www.felipewally.com.br Twitter: @felipe_wally 2 / 42
  3. 3. Quem sou eu? Felipe Buarque (wally) Mestrando pela UFPE Entusiasta de software livre Entusiasta da linguagem Python Blog: www.felipewally.com.br Twitter: @felipe_wally 2 / 42
  4. 4. Quem sou eu? Felipe Buarque (wally) Mestrando pela UFPE Entusiasta de software livre Entusiasta da linguagem Python Blog: www.felipewally.com.br Twitter: @felipe_wally 2 / 42
  5. 5. Quem sou eu? Felipe Buarque (wally) Mestrando pela UFPE Entusiasta de software livre Entusiasta da linguagem Python Blog: www.felipewally.com.br Twitter: @felipe_wally 2 / 42
  6. 6. Quem sou eu? Felipe Buarque (wally) Mestrando pela UFPE Entusiasta de software livre Entusiasta da linguagem Python Blog: www.felipewally.com.br Twitter: @felipe_wally 2 / 42
  7. 7. Quem sou eu? Felipe Buarque (wally) Mestrando pela UFPE Entusiasta de software livre Entusiasta da linguagem Python Blog: www.felipewally.com.br Twitter: @felipe_wally 2 / 42
  8. 8. Alguém conhece Python? 3 / 42
  9. 9. Alguém NÃO conhece Python? 4 / 42
  10. 10. Um pouco de história... Open Source script language Guido Van Rossum (BDFL) - 1991 Monty Python’s Flying Circus Ensino de programação Simplicidade e fácil aprendizado import this 5 / 42
  11. 11. Um pouco de história... Open Source script language Guido Van Rossum (BDFL) - 1991 Monty Python’s Flying Circus Ensino de programação Simplicidade e fácil aprendizado import this 5 / 42
  12. 12. Um pouco de história... Open Source script language Guido Van Rossum (BDFL) - 1991 Monty Python’s Flying Circus Ensino de programação Simplicidade e fácil aprendizado import this 5 / 42
  13. 13. Um pouco de história... Open Source script language Guido Van Rossum (BDFL) - 1991 Monty Python’s Flying Circus Ensino de programação Simplicidade e fácil aprendizado import this 5 / 42
  14. 14. Um pouco de história... Open Source script language Guido Van Rossum (BDFL) - 1991 Monty Python’s Flying Circus Ensino de programação Simplicidade e fácil aprendizado import this 5 / 42
  15. 15. Um pouco de história... Open Source script language Guido Van Rossum (BDFL) - 1991 Monty Python’s Flying Circus Ensino de programação Simplicidade e fácil aprendizado import this 5 / 42
  16. 16. Características Interpretada (bytecode + VM) Multiplataforma Tipagem forte e dinâmica OO + procedural + funcional Extensa biblioteca padrão Sintaxe elegante, simples e clara Blocos de código são delimitados por identação Interpretador interativo: Shell 6 / 42
  17. 17. Características Interpretada (bytecode + VM) Multiplataforma Tipagem forte e dinâmica OO + procedural + funcional Extensa biblioteca padrão Sintaxe elegante, simples e clara Blocos de código são delimitados por identação Interpretador interativo: Shell 6 / 42
  18. 18. Características Interpretada (bytecode + VM) Multiplataforma Tipagem forte e dinâmica OO + procedural + funcional Extensa biblioteca padrão Sintaxe elegante, simples e clara Blocos de código são delimitados por identação Interpretador interativo: Shell 6 / 42
  19. 19. Características Interpretada (bytecode + VM) Multiplataforma Tipagem forte e dinâmica OO + procedural + funcional Extensa biblioteca padrão Sintaxe elegante, simples e clara Blocos de código são delimitados por identação Interpretador interativo: Shell 6 / 42
  20. 20. Características Interpretada (bytecode + VM) Multiplataforma Tipagem forte e dinâmica OO + procedural + funcional Extensa biblioteca padrão Sintaxe elegante, simples e clara Blocos de código são delimitados por identação Interpretador interativo: Shell 6 / 42
  21. 21. Características Interpretada (bytecode + VM) Multiplataforma Tipagem forte e dinâmica OO + procedural + funcional Extensa biblioteca padrão Sintaxe elegante, simples e clara Blocos de código são delimitados por identação Interpretador interativo: Shell 6 / 42
  22. 22. Características Interpretada (bytecode + VM) Multiplataforma Tipagem forte e dinâmica OO + procedural + funcional Extensa biblioteca padrão Sintaxe elegante, simples e clara Blocos de código são delimitados por identação Interpretador interativo: Shell 6 / 42
  23. 23. Características Interpretada (bytecode + VM) Multiplataforma Tipagem forte e dinâmica OO + procedural + funcional Extensa biblioteca padrão Sintaxe elegante, simples e clara Blocos de código são delimitados por identação Interpretador interativo: Shell 6 / 42
  24. 24. Desenvolvimento Web: Zope, Webware, TurboGears, Django ... Banco de dados: DB-API, Oracle, MySQL, PostgreSQL, SQLite, MongoDB ... GUI: Tkinter, wxPython, PyQT, PyGTK, PyFLTK ... Rede: Sockets, ftp, http, smtp, Twisted ... Webservices: XML-RPC, SOAP ... Outros: Threads, Unicode, XML ... 7 / 42
  25. 25. Desenvolvimento Web: Zope, Webware, TurboGears, Django ... Banco de dados: DB-API, Oracle, MySQL, PostgreSQL, SQLite, MongoDB ... GUI: Tkinter, wxPython, PyQT, PyGTK, PyFLTK ... Rede: Sockets, ftp, http, smtp, Twisted ... Webservices: XML-RPC, SOAP ... Outros: Threads, Unicode, XML ... 7 / 42
  26. 26. Desenvolvimento Web: Zope, Webware, TurboGears, Django ... Banco de dados: DB-API, Oracle, MySQL, PostgreSQL, SQLite, MongoDB ... GUI: Tkinter, wxPython, PyQT, PyGTK, PyFLTK ... Rede: Sockets, ftp, http, smtp, Twisted ... Webservices: XML-RPC, SOAP ... Outros: Threads, Unicode, XML ... 7 / 42
  27. 27. Desenvolvimento Web: Zope, Webware, TurboGears, Django ... Banco de dados: DB-API, Oracle, MySQL, PostgreSQL, SQLite, MongoDB ... GUI: Tkinter, wxPython, PyQT, PyGTK, PyFLTK ... Rede: Sockets, ftp, http, smtp, Twisted ... Webservices: XML-RPC, SOAP ... Outros: Threads, Unicode, XML ... 7 / 42
  28. 28. Desenvolvimento Web: Zope, Webware, TurboGears, Django ... Banco de dados: DB-API, Oracle, MySQL, PostgreSQL, SQLite, MongoDB ... GUI: Tkinter, wxPython, PyQT, PyGTK, PyFLTK ... Rede: Sockets, ftp, http, smtp, Twisted ... Webservices: XML-RPC, SOAP ... Outros: Threads, Unicode, XML ... 7 / 42
  29. 29. Desenvolvimento Web: Zope, Webware, TurboGears, Django ... Banco de dados: DB-API, Oracle, MySQL, PostgreSQL, SQLite, MongoDB ... GUI: Tkinter, wxPython, PyQT, PyGTK, PyFLTK ... Rede: Sockets, ftp, http, smtp, Twisted ... Webservices: XML-RPC, SOAP ... Outros: Threads, Unicode, XML ... 7 / 42
  30. 30. Onde roda? 8 / 42
  31. 31. Frameworks web 9 / 42
  32. 32. Welcome to the Django! 10 / 42
  33. 33. O que é Django?! “Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.” (djangoproject.com) “...and is not a CMS system.” (wally) 11 / 42
  34. 34. Origens... 12 / 42
  35. 35. Origens... 13 / 42
  36. 36. Origens... Criado por Adrian Holovaty - PyCon 2005 Criado para ser um gerenciador de notícias Licença BSD 1 Mantido pela Django Software Foundation desde 2008 1 http://en.wikipedia.org/wiki/BSD_licenses 14 / 42
  37. 37. Origens... Criado por Adrian Holovaty - PyCon 2005 Criado para ser um gerenciador de notícias Licença BSD 1 Mantido pela Django Software Foundation desde 2008 1 http://en.wikipedia.org/wiki/BSD_licenses 14 / 42
  38. 38. Origens... Criado por Adrian Holovaty - PyCon 2005 Criado para ser um gerenciador de notícias Licença BSD 1 Mantido pela Django Software Foundation desde 2008 1 http://en.wikipedia.org/wiki/BSD_licenses 14 / 42
  39. 39. Origens... Criado por Adrian Holovaty - PyCon 2005 Criado para ser um gerenciador de notícias Licença BSD 1 Mantido pela Django Software Foundation desde 2008 1 http://en.wikipedia.org/wiki/BSD_licenses 14 / 42
  40. 40. djangoproject.com 15 / 42
  41. 41. Princípios (... ou filosofias) DRY (Don’t Repeat Yourself) Baixo acoplamento Plugabilidade e reusabilidade Escrever menos código possível Desenvolvimento rápido! 16 / 42
  42. 42. Princípios (... ou filosofias) DRY (Don’t Repeat Yourself) Baixo acoplamento Plugabilidade e reusabilidade Escrever menos código possível Desenvolvimento rápido! 16 / 42
  43. 43. Princípios (... ou filosofias) DRY (Don’t Repeat Yourself) Baixo acoplamento Plugabilidade e reusabilidade Escrever menos código possível Desenvolvimento rápido! 16 / 42
  44. 44. Princípios (... ou filosofias) DRY (Don’t Repeat Yourself) Baixo acoplamento Plugabilidade e reusabilidade Escrever menos código possível Desenvolvimento rápido! 16 / 42
  45. 45. Princípios (... ou filosofias) DRY (Don’t Repeat Yourself) Baixo acoplamento Plugabilidade e reusabilidade Escrever menos código possível Desenvolvimento rápido! 16 / 42
  46. 46. Características Convention over configuration Mapeamento Objeto-Relacional (ORM) Interface administrativa automática (CRUD) Tratamento de formulários URLs elegantes Sistema de templates Sistema de cache Internacionalização (i18n) 17 / 42
  47. 47. Características Convention over configuration Mapeamento Objeto-Relacional (ORM) Interface administrativa automática (CRUD) Tratamento de formulários URLs elegantes Sistema de templates Sistema de cache Internacionalização (i18n) 17 / 42
  48. 48. Características Convention over configuration Mapeamento Objeto-Relacional (ORM) Interface administrativa automática (CRUD) Tratamento de formulários URLs elegantes Sistema de templates Sistema de cache Internacionalização (i18n) 17 / 42
  49. 49. Características Convention over configuration Mapeamento Objeto-Relacional (ORM) Interface administrativa automática (CRUD) Tratamento de formulários URLs elegantes Sistema de templates Sistema de cache Internacionalização (i18n) 17 / 42
  50. 50. Características Convention over configuration Mapeamento Objeto-Relacional (ORM) Interface administrativa automática (CRUD) Tratamento de formulários URLs elegantes Sistema de templates Sistema de cache Internacionalização (i18n) 17 / 42
  51. 51. Características Convention over configuration Mapeamento Objeto-Relacional (ORM) Interface administrativa automática (CRUD) Tratamento de formulários URLs elegantes Sistema de templates Sistema de cache Internacionalização (i18n) 17 / 42
  52. 52. Características Convention over configuration Mapeamento Objeto-Relacional (ORM) Interface administrativa automática (CRUD) Tratamento de formulários URLs elegantes Sistema de templates Sistema de cache Internacionalização (i18n) 17 / 42
  53. 53. Características Convention over configuration Mapeamento Objeto-Relacional (ORM) Interface administrativa automática (CRUD) Tratamento de formulários URLs elegantes Sistema de templates Sistema de cache Internacionalização (i18n) 17 / 42
  54. 54. ... e o melhor, é 18 / 42
  55. 55. MVC? Não... MTV! 19 / 42
  56. 56. MTV - Overview 20 / 42
  57. 57. Go to the project! 21 / 42
  58. 58. Configurando... Download: www.djangoproject.com/download Desempacotando: sudo tar -zxvf Django-x.x.x.tar.gz python setup.py install Ou: sudo apt-get install python-django (SOs baseados em Debian) 22 / 42
  59. 59. Configurando... Download: www.djangoproject.com/download Desempacotando: sudo tar -zxvf Django-x.x.x.tar.gz python setup.py install Ou: sudo apt-get install python-django (SOs baseados em Debian) 22 / 42
  60. 60. Configurando... Download: www.djangoproject.com/download Desempacotando: sudo tar -zxvf Django-x.x.x.tar.gz python setup.py install Ou: sudo apt-get install python-django (SOs baseados em Debian) 22 / 42
  61. 61. Criando um projeto... django-admin.py startproject <nome_do_projeto> 23 / 42
  62. 62. Arquivos de configuração __init__.py - indica um pacote python manager.py - tarefas administrativas settings.py - configurações do projeto urls.py - mapeamento das URLs do projeto 24 / 42
  63. 63. Vamos fazer algo... No settings.py: DATABASE.ENGINE = ‘django.db.backends.sqlite3’ DATABASE.NAME = ‘mural.db’ No diretório do projeto: python manage.py runserver No browser: http://localhost:8000 25 / 42
  64. 64. Vamos fazer algo... No settings.py: DATABASE.ENGINE = ‘django.db.backends.sqlite3’ DATABASE.NAME = ‘mural.db’ No diretório do projeto: python manage.py runserver No browser: http://localhost:8000 25 / 42
  65. 65. Vamos fazer algo... No settings.py: DATABASE.ENGINE = ‘django.db.backends.sqlite3’ DATABASE.NAME = ‘mural.db’ No diretório do projeto: python manage.py runserver No browser: http://localhost:8000 25 / 42
  66. 66. Aplicações no Django Plugabilidade Aplicações plugáveis desenvolvidas pela comunidade www.djangopluggables.com 26 / 42
  67. 67. Criando uma aplicação... python manage.py startapp <nome_da_aplicação> 27 / 42
  68. 68. Arquivos da aplicação models.py - abstração do banco de dados / entidades do sistema tests.py - testes da aplicação views.py - controller da aplicação 28 / 42
  69. 69. Criando um modelo... 29 / 42
  70. 70. Instalando a aplicação... No settings.py: INSTALLED_APPS = (... ‘jainf.mural’) Gerando o banco de dados: python manage.py syncdb 30 / 42
  71. 71. Instalando a aplicação... No settings.py: INSTALLED_APPS = (... ‘jainf.mural’) Gerando o banco de dados: python manage.py syncdb 30 / 42
  72. 72. Django Admin Aplicação plugável que vem por padrão no framework Interface administrativa gerada com muito pouco trabalho Acelera a produtividade mas perde em flexibilidade 31 / 42
  73. 73. Configurando o Django Admin... Adicionar a aplicação django.contrib.admin ao INSTALLED_APPS Descomentar as seguintes linhas no arquivo urls.py: # from django.contrib import admin # admin.autodiscover() # (r‘âdmin/’, include(admin.site.urls) 32 / 42
  74. 74. Configurando o Django Admin... Adicionar a aplicação django.contrib.admin ao INSTALLED_APPS Descomentar as seguintes linhas no arquivo urls.py: # from django.contrib import admin # admin.autodiscover() # (r‘âdmin/’, include(admin.site.urls) 32 / 42
  75. 75. Registrando o modelo no Admin... Criar o arquivo admin.py dentro do diretório da aplicação Sincronizar o banco de dados No browser: http://localhost:8000/admin 33 / 42
  76. 76. Registrando o modelo no Admin... Criar o arquivo admin.py dentro do diretório da aplicação Sincronizar o banco de dados No browser: http://localhost:8000/admin 33 / 42
  77. 77. Registrando o modelo no Admin... Criar o arquivo admin.py dentro do diretório da aplicação Sincronizar o banco de dados No browser: http://localhost:8000/admin 33 / 42
  78. 78. Generic views Views genéricas disponibilizadas junto com o framework Realizam ações básicas: listar, detalhar, cadastrar, editar, excluir 34 / 42
  79. 79. Utilizando as generic views... Edite o arquivo urls.py: 35 / 42
  80. 80. Templates Linguagem simples para desenvolvimento de templates Utilização de tags e filters Tag block proporciona reusabilidade de código 36 / 42
  81. 81. Configurando os templates... Criar uma pasta chamada ‘templates’ na raiz do projeto Adicionar o seguinte código ao settings.py: import os PROJECT_ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) TEMPLATE_DIRS = (os.path.abspath(os.path.join(PROJECT_ROOT_PATH, ‘templates’))) 37 / 42
  82. 82. Configurando os templates... Criar uma pasta chamada ‘templates’ na raiz do projeto Adicionar o seguinte código ao settings.py: import os PROJECT_ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) TEMPLATE_DIRS = (os.path.abspath(os.path.join(PROJECT_ROOT_PATH, ‘templates’))) 37 / 42
  83. 83. Configurando os templates... Criar o arquivo templates/blog/artigo_list.html e adicionar o conteúdo: No browser: http://localhost:8000 38 / 42
  84. 84. Configurando os templates... Criar o arquivo templates/blog/artigo_list.html e adicionar o conteúdo: No browser: http://localhost:8000 38 / 42
  85. 85. Recapitulando... Django é fácil Django é divertido! Django é escalável Django permite uma boa manutenibilidade It rocks! USE IT!! 39 / 42
  86. 86. Alguém utiliza? 40 / 42
  87. 87. E no Brasil? 41 / 42
  88. 88. Obrigado! 42 / 42

×