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
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
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

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

  • 1.
    Django Desenvolvendo aplicações webde 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.
    Quem sou eu? FelipeBuarque (wally) Mestrando pela UFPE Entusiasta de software livre Entusiasta da linguagem Python Blog: www.felipewally.com.br Twitter: @felipe_wally 2 / 42
  • 3.
    Quem sou eu? FelipeBuarque (wally) Mestrando pela UFPE Entusiasta de software livre Entusiasta da linguagem Python Blog: www.felipewally.com.br Twitter: @felipe_wally 2 / 42
  • 4.
    Quem sou eu? FelipeBuarque (wally) Mestrando pela UFPE Entusiasta de software livre Entusiasta da linguagem Python Blog: www.felipewally.com.br Twitter: @felipe_wally 2 / 42
  • 5.
    Quem sou eu? FelipeBuarque (wally) Mestrando pela UFPE Entusiasta de software livre Entusiasta da linguagem Python Blog: www.felipewally.com.br Twitter: @felipe_wally 2 / 42
  • 6.
    Quem sou eu? FelipeBuarque (wally) Mestrando pela UFPE Entusiasta de software livre Entusiasta da linguagem Python Blog: www.felipewally.com.br Twitter: @felipe_wally 2 / 42
  • 7.
    Quem sou eu? FelipeBuarque (wally) Mestrando pela UFPE Entusiasta de software livre Entusiasta da linguagem Python Blog: www.felipewally.com.br Twitter: @felipe_wally 2 / 42
  • 8.
  • 9.
    Alguém NÃO conhecePython? 4 / 42
  • 10.
    Um pouco dehistó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.
    Um pouco dehistó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.
    Um pouco dehistó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.
    Um pouco dehistó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.
    Um pouco dehistó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.
    Um pouco dehistó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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
  • 31.
  • 32.
    Welcome to theDjango! 10 / 42
  • 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.
  • 35.
  • 36.
    Origens... Criado por AdrianHolovaty - 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.
    Origens... Criado por AdrianHolovaty - 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.
    Origens... Criado por AdrianHolovaty - 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.
    Origens... Criado por AdrianHolovaty - 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.
  • 41.
    Princípios (... oufilosofias) DRY (Don’t Repeat Yourself) Baixo acoplamento Plugabilidade e reusabilidade Escrever menos código possível Desenvolvimento rápido! 16 / 42
  • 42.
    Princípios (... oufilosofias) DRY (Don’t Repeat Yourself) Baixo acoplamento Plugabilidade e reusabilidade Escrever menos código possível Desenvolvimento rápido! 16 / 42
  • 43.
    Princípios (... oufilosofias) DRY (Don’t Repeat Yourself) Baixo acoplamento Plugabilidade e reusabilidade Escrever menos código possível Desenvolvimento rápido! 16 / 42
  • 44.
    Princípios (... oufilosofias) DRY (Don’t Repeat Yourself) Baixo acoplamento Plugabilidade e reusabilidade Escrever menos código possível Desenvolvimento rápido! 16 / 42
  • 45.
    Princípios (... oufilosofias) DRY (Don’t Repeat Yourself) Baixo acoplamento Plugabilidade e reusabilidade Escrever menos código possível Desenvolvimento rápido! 16 / 42
  • 46.
    Características Convention over configuration MapeamentoObjeto-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.
    Características Convention over configuration MapeamentoObjeto-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.
    Características Convention over configuration MapeamentoObjeto-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.
    Características Convention over configuration MapeamentoObjeto-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.
    Características Convention over configuration MapeamentoObjeto-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.
    Características Convention over configuration MapeamentoObjeto-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.
    Características Convention over configuration MapeamentoObjeto-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.
    Características Convention over configuration MapeamentoObjeto-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.
    ... e omelhor, é 18 / 42
  • 55.
  • 56.
  • 57.
    Go to theproject! 21 / 42
  • 58.
    Configurando... Download: www.djangoproject.com/download Desempacotando: sudo tar -zxvfDjango-x.x.x.tar.gz python setup.py install Ou: sudo apt-get install python-django (SOs baseados em Debian) 22 / 42
  • 59.
    Configurando... Download: www.djangoproject.com/download Desempacotando: sudo tar -zxvfDjango-x.x.x.tar.gz python setup.py install Ou: sudo apt-get install python-django (SOs baseados em Debian) 22 / 42
  • 60.
    Configurando... Download: www.djangoproject.com/download Desempacotando: sudo tar -zxvfDjango-x.x.x.tar.gz python setup.py install Ou: sudo apt-get install python-django (SOs baseados em Debian) 22 / 42
  • 61.
    Criando um projeto... django-admin.pystartproject <nome_do_projeto> 23 / 42
  • 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.
    Vamos fazer algo... Nosettings.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.
    Vamos fazer algo... Nosettings.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.
    Vamos fazer algo... Nosettings.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.
    Aplicações no Django Plugabilidade Aplicaçõesplugáveis desenvolvidas pela comunidade www.djangopluggables.com 26 / 42
  • 67.
    Criando uma aplicação... pythonmanage.py startapp <nome_da_aplicação> 27 / 42
  • 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.
  • 70.
    Instalando a aplicação... Nosettings.py: INSTALLED_APPS = (... ‘jainf.mural’) Gerando o banco de dados: python manage.py syncdb 30 / 42
  • 71.
    Instalando a aplicação... Nosettings.py: INSTALLED_APPS = (... ‘jainf.mural’) Gerando o banco de dados: python manage.py syncdb 30 / 42
  • 72.
    Django Admin Aplicação plugávelque vem por padrão no framework Interface administrativa gerada com muito pouco trabalho Acelera a produtividade mas perde em flexibilidade 31 / 42
  • 73.
    Configurando o DjangoAdmin... 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.
    Configurando o DjangoAdmin... 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.
    Registrando o modelono 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.
    Registrando o modelono 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.
    Registrando o modelono 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.
    Generic views Views genéricasdisponibilizadas junto com o framework Realizam ações básicas: listar, detalhar, cadastrar, editar, excluir 34 / 42
  • 79.
    Utilizando as genericviews... Edite o arquivo urls.py: 35 / 42
  • 80.
    Templates Linguagem simples paradesenvolvimento de templates Utilização de tags e filters Tag block proporciona reusabilidade de código 36 / 42
  • 81.
    Configurando os templates... Criaruma 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.
    Configurando os templates... Criaruma 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.
    Configurando os templates... Criaro arquivo templates/blog/artigo_list.html e adicionar o conteúdo: No browser: http://localhost:8000 38 / 42
  • 84.
    Configurando os templates... Criaro arquivo templates/blog/artigo_list.html e adicionar o conteúdo: No browser: http://localhost:8000 38 / 42
  • 85.
    Recapitulando... Django é fácil Djangoé divertido! Django é escalável Django permite uma boa manutenibilidade It rocks! USE IT!! 39 / 42
  • 86.
  • 87.
  • 88.