Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

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

on

  • 3,751 views

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

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

Statistics

Views

Total Views
3,751
Views on SlideShare
3,744
Embed Views
7

Actions

Likes
3
Downloads
111
Comments
1

1 Embed 7

http://www.linkedin.com 7

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Teu Blog ta off mesmo?
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • 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
  • 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
  • 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 View slide
  • 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 View slide
  • 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
  • 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
  • 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
  • Alguém conhece Python? 3 / 42
  • Alguém NÃO conhece Python? 4 / 42
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • Onde roda? 8 / 42
  • Frameworks web 9 / 42
  • Welcome to the Django! 10 / 42
  • 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
  • Origens... 12 / 42
  • Origens... 13 / 42
  • 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
  • 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
  • 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
  • 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
  • djangoproject.com 15 / 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • ... e o melhor, é 18 / 42
  • MVC? Não... MTV! 19 / 42
  • MTV - Overview 20 / 42
  • Go to the project! 21 / 42
  • 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
  • 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
  • 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
  • Criando um projeto... django-admin.py startproject <nome_do_projeto> 23 / 42
  • 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
  • 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
  • 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
  • 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
  • Aplicações no Django Plugabilidade Aplicações plugáveis desenvolvidas pela comunidade www.djangopluggables.com 26 / 42
  • Criando uma aplicação... python manage.py startapp <nome_da_aplicação> 27 / 42
  • 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
  • Criando um modelo... 29 / 42
  • Instalando a aplicação... No settings.py: INSTALLED_APPS = (... ‘jainf.mural’) Gerando o banco de dados: python manage.py syncdb 30 / 42
  • Instalando a aplicação... No settings.py: INSTALLED_APPS = (... ‘jainf.mural’) Gerando o banco de dados: python manage.py syncdb 30 / 42
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • Generic views Views genéricas disponibilizadas junto com o framework Realizam ações básicas: listar, detalhar, cadastrar, editar, excluir 34 / 42
  • Utilizando as generic views... Edite o arquivo urls.py: 35 / 42
  • Templates Linguagem simples para desenvolvimento de templates Utilização de tags e filters Tag block proporciona reusabilidade de código 36 / 42
  • 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
  • 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
  • Configurando os templates... Criar o arquivo templates/blog/artigo_list.html e adicionar o conteúdo: No browser: http://localhost:8000 38 / 42
  • Configurando os templates... Criar o arquivo templates/blog/artigo_list.html e adicionar o conteúdo: No browser: http://localhost:8000 38 / 42
  • Recapitulando... Django é fácil Django é divertido! Django é escalável Django permite uma boa manutenibilidade It rocks! USE IT!! 39 / 42
  • Alguém utiliza? 40 / 42
  • E no Brasil? 41 / 42
  • Obrigado! 42 / 42