SlideShare una empresa de Scribd logo
1 de 88
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.Arthur Furlan
 
Composer dependency manager
Composer   dependency managerComposer   dependency manager
Composer dependency managerVitor Mattos
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.comricobl
 
Composer dependency manager - TDC - POA 2017
Composer   dependency manager - TDC - POA 2017Composer   dependency manager - TDC - POA 2017
Composer dependency manager - TDC - POA 2017Vitor Mattos
 
Contribuindo e criando software livre
Contribuindo e criando software livreContribuindo e criando software livre
Contribuindo e criando software livreVitor Mattos
 
Desenvolvimento web com python e web2py
Desenvolvimento web com python e web2pyDesenvolvimento web com python e web2py
Desenvolvimento web com python e web2pyRelsi Maron
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e DjangoOsvaldo Santana Neto
 
Criando websites a jato com Django
Criando websites a jato com DjangoCriando websites a jato com Django
Criando websites a jato com DjangoMarcos Petry
 
Treinamento Básico de Django
Treinamento Básico de DjangoTreinamento Básico de Django
Treinamento Básico de DjangoLeandro Zanuz
 
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonMinicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonGuilherme Garcia
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web ServicesDorneles Treméa
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Webantonio sérgio nogueira
 
Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Michael Douglas
 
Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosLucas Vegi
 

La actualidad más candente (20)

Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.
 
Composer dependency manager
Composer   dependency managerComposer   dependency manager
Composer dependency manager
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 
Composer dependency manager - TDC - POA 2017
Composer   dependency manager - TDC - POA 2017Composer   dependency manager - TDC - POA 2017
Composer dependency manager - TDC - POA 2017
 
Contribuindo e criando software livre
Contribuindo e criando software livreContribuindo e criando software livre
Contribuindo e criando software livre
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
Desenvolvimento web com python e web2py
Desenvolvimento web com python e web2pyDesenvolvimento web com python e web2py
Desenvolvimento web com python e web2py
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e Django
 
Criando websites a jato com Django
Criando websites a jato com DjangoCriando websites a jato com Django
Criando websites a jato com Django
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Treinamento Básico de Django
Treinamento Básico de DjangoTreinamento Básico de Django
Treinamento Básico de Django
 
Python WTFAQ?
Python WTFAQ?Python WTFAQ?
Python WTFAQ?
 
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonMinicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e Python
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web Services
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
 
Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php
 
Desenvolvimento Mobile Web e PHP na FIPAR
Desenvolvimento Mobile Web e PHP na FIPARDesenvolvimento Mobile Web e PHP na FIPAR
Desenvolvimento Mobile Web e PHP na FIPAR
 
Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetos
 
Desenvolvimento Mobile Web usando PHP
Desenvolvimento Mobile Web usando PHPDesenvolvimento Mobile Web usando PHP
Desenvolvimento Mobile Web usando PHP
 

Destacado

Construindo Sistemas Com Django
Construindo Sistemas Com DjangoConstruindo Sistemas Com Django
Construindo Sistemas Com DjangoMarinho Brandão
 
Django: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento webDjango: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento webMiguel Galves
 
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
[PDF] Repensando o Desenvolvimento Web com Ruby on RailsDante Regis
 
Introdução ao Ruby On Rails
Introdução ao Ruby On RailsIntrodução ao Ruby On Rails
Introdução ao Ruby On RailsMilton Moura
 
Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Lindomar ...
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Douglas Roeder
 
Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsJulio Betta
 
Mini-curso RoR - Apresentação
Mini-curso RoR - ApresentaçãoMini-curso RoR - Apresentação
Mini-curso RoR - ApresentaçãoAgence Educacional
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Railsismaelstahelin
 
Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011Andre Bernardes
 
Introducao ao Ruby On Rails
Introducao ao Ruby On RailsIntroducao ao Ruby On Rails
Introducao ao Ruby On RailsAndre Ferraro
 
Segurança em Rails
Segurança em RailsSegurança em Rails
Segurança em RailsJuan Maiz
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Marcelo Bohn
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsLucas Caton
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyDiego Rubin
 
Curso de Ruby on Rails
Curso de Ruby on RailsCurso de Ruby on Rails
Curso de Ruby on RailsCJR, UnB
 

Destacado (20)

Construindo Sistemas Com Django
Construindo Sistemas Com DjangoConstruindo Sistemas Com Django
Construindo Sistemas Com Django
 
Django: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento webDjango: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento web
 
Django
DjangoDjango
Django
 
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
 
Introdução ao Ruby On Rails
Introdução ao Ruby On RailsIntrodução ao Ruby On Rails
Introdução ao Ruby On Rails
 
Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71
 
SEA Rails na pratica
SEA Rails na praticaSEA Rails na pratica
SEA Rails na pratica
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01
 
Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on Rails
 
Mini-curso RoR - Apresentação
Mini-curso RoR - ApresentaçãoMini-curso RoR - Apresentação
Mini-curso RoR - Apresentação
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011
 
Introducao ao Ruby On Rails
Introducao ao Ruby On RailsIntroducao ao Ruby On Rails
Introducao ao Ruby On Rails
 
Mini-curso RoR - Aula 01
Mini-curso RoR - Aula 01Mini-curso RoR - Aula 01
Mini-curso RoR - Aula 01
 
Segurança em Rails
Segurança em RailsSegurança em Rails
Segurança em Rails
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014
 
Rails na pratica
Rails na praticaRails na pratica
Rails na pratica
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on Rails
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação Ruby
 
Curso de Ruby on Rails
Curso de Ruby on RailsCurso de Ruby on Rails
Curso de Ruby on Rails
 

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

Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoSecomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoEmerson Macedo
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Emerson Macedo
 
Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Marcos Paulo
 
RubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJSRubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJSEmerson Macedo
 
Programação Orientada a Objetos de Arduino com Eclipse
Programação Orientada a Objetos de Arduino com EclipseProgramação Orientada a Objetos de Arduino com Eclipse
Programação Orientada a Objetos de Arduino com EclipseJosé Antônio de Figueiredo
 
Programação Orientada a Objetos de Arduino com Eclipse
Programação Orientada a Objetos de Arduino com EclipseProgramação Orientada a Objetos de Arduino com Eclipse
Programação Orientada a Objetos de Arduino com EclipseTchelinux
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPRamon Ribeiro Rabello
 
Pyramid - O Framework Web para Todos
Pyramid - O Framework Web para TodosPyramid - O Framework Web para Todos
Pyramid - O Framework Web para TodosRuda Filgueiras
 
Ferramentas de Apoio ao Desenvolvimento de Software
Ferramentas de Apoio ao Desenvolvimento de SoftwareFerramentas de Apoio ao Desenvolvimento de Software
Ferramentas de Apoio ao Desenvolvimento de SoftwareComunidade NetPonto
 
python_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfpython_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfProfIvanSaboia
 
Arduino + Python: produtividade ao extremo
Arduino + Python: produtividade ao extremoArduino + Python: produtividade ao extremo
Arduino + Python: produtividade ao extremoÁlvaro Justen
 
Gdg quality fest 2018 - Metralhando o próprio produto com tudo!
Gdg quality fest 2018 - Metralhando o próprio produto com tudo!Gdg quality fest 2018 - Metralhando o próprio produto com tudo!
Gdg quality fest 2018 - Metralhando o próprio produto com tudo!Flávio Pimenta
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyGilson Filho
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcadotdc-globalcode
 

Similar a Django: desenvolvendo aplicações web de maneira simples e rápida! (20)

Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoSecomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - Introdução
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011
 
Ecossistema Python
Ecossistema PythonEcossistema Python
Ecossistema Python
 
Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016
 
Python e suas aplicações
Python e suas aplicaçõesPython e suas aplicações
Python e suas aplicações
 
Apostila_IC.pdf
Apostila_IC.pdfApostila_IC.pdf
Apostila_IC.pdf
 
RubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJSRubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJS
 
Programação Orientada a Objetos de Arduino com Eclipse
Programação Orientada a Objetos de Arduino com EclipseProgramação Orientada a Objetos de Arduino com Eclipse
Programação Orientada a Objetos de Arduino com Eclipse
 
Programação Orientada a Objetos de Arduino com Eclipse
Programação Orientada a Objetos de Arduino com EclipseProgramação Orientada a Objetos de Arduino com Eclipse
Programação Orientada a Objetos de Arduino com Eclipse
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHP
 
Pyramid - O Framework Web para Todos
Pyramid - O Framework Web para TodosPyramid - O Framework Web para Todos
Pyramid - O Framework Web para Todos
 
Ferramentas de Apoio ao Desenvolvimento de Software
Ferramentas de Apoio ao Desenvolvimento de SoftwareFerramentas de Apoio ao Desenvolvimento de Software
Ferramentas de Apoio ao Desenvolvimento de Software
 
python_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfpython_para_desenvolvedores.pdf
python_para_desenvolvedores.pdf
 
Arduino + Python: produtividade ao extremo
Arduino + Python: produtividade ao extremoArduino + Python: produtividade ao extremo
Arduino + Python: produtividade ao extremo
 
Python Zope Plone - Ftec
Python Zope Plone - FtecPython Zope Plone - Ftec
Python Zope Plone - Ftec
 
Gdg quality fest 2018 - Metralhando o próprio produto com tudo!
Gdg quality fest 2018 - Metralhando o próprio produto com tudo!Gdg quality fest 2018 - Metralhando o próprio produto com tudo!
Gdg quality fest 2018 - Metralhando o próprio produto com tudo!
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2py
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 
Introdução a Frameworks
Introdução a FrameworksIntrodução a Frameworks
Introdução a Frameworks
 

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

  • 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. 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. 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. 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. 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. 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. 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
  • 9. Alguém NÃO conhece Python? 4 / 42
  • 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. 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. 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. 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. 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. 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. 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
  • 32. Welcome to the Django! 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
  • 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. 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. 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. 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
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. ... e o melhor, é 18 / 42
  • 57. Go to the project! 21 / 42
  • 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. 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. 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. Criando um projeto... django-admin.py startproject <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... 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. 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. 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. Aplicações no Django Plugabilidade Aplicações plugáveis desenvolvidas pela comunidade www.djangopluggables.com 26 / 42
  • 67. Criando uma aplicação... python manage.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
  • 70. Instalando a aplicação... No settings.py: INSTALLED_APPS = (... ‘jainf.mural’) Gerando o banco de dados: python manage.py syncdb 30 / 42
  • 71. Instalando a aplicação... No settings.py: INSTALLED_APPS = (... ‘jainf.mural’) Gerando o banco de dados: python manage.py syncdb 30 / 42
  • 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. 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. 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. 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. 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. 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. Generic views Views genéricas disponibilizadas junto com o framework Realizam ações básicas: listar, detalhar, cadastrar, editar, excluir 34 / 42
  • 79. Utilizando as generic views... Edite o arquivo urls.py: 35 / 42
  • 80. Templates Linguagem simples para desenvolvimento de templates Utilização de tags e filters Tag block proporciona reusabilidade de código 36 / 42
  • 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. 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. Configurando os templates... Criar o arquivo templates/blog/artigo_list.html e adicionar o conteúdo: No browser: http://localhost:8000 38 / 42
  • 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. Recapitulando... Django é fácil Django é divertido! Django é escalável Django permite uma boa manutenibilidade It rocks! USE IT!! 39 / 42