django: o framework web para perfeccionistas com prazos
DESCRIPTION
Apresentação de Django apresentada no II Liberdade Interativa, que aconteceu no dia 19 de agosto de 2010, na Faesa, Av. Vitória (Vitória, ES).TRANSCRIPT
Desenvolvendo
Desenvolvendo
aplicações web
Desenvolvendo
aplicações webem tempo
Desenvolvendo
aplicações webem tempo
RECORDE.
35
30
20
10
O teclado mais rápido do Oeste.
O teclado mais rápido do Oeste.
#$%&*&@#@#
#@$%
DjangoO framework web para perfeccionistas com prazos
quem é você?
Welcome to the Django!
mas qual é a relação?
Magia
Abrindo a caixa
Orientado a aplicações
MVC?
MVC?+-
Cliente (browser)
URLTemplate
View
Model
Banco de dados
GET /livros
URLTemplate
View
Model
Banco de dados
GET /livros
Módulo de URLsTemplate
View
Model
Banco de dados
(r'^livros/$', 'views.listar_livros'),
GET /livros
Módulo de URLsTemplate
listar_livros(request)
Model
Banco de dados
def listar_livros(request): livros = Livro.objects.all() return render_to_response('livros.html', locals())
listar_livros(request)
GET /livros
Módulo de URLsTemplate
Model: classe Livro
Banco de dados
class Livro(Model): titulo = CharField(max_length = 100)
def listar_livros(request): livros = Livro.objects.all() return render_to_response('livros.html', locals())
Model: classe Livro
GET /livros
Módulo de URLsTemplate
Não importa (:
listar_livros(request)
def listar_livros(request): livros = Livro.objects.all() return render_to_response('livros.html', locals())
listar_livros(request)
Model: classe Livro
GET /livros
Módulo de URLslivros.html
def listar_livros(request): livros = Livro.objects.all() return render_to_response('livros.html', locals())
<ul> {% for livro in livros %} <li>{{ livro.titulo }}</li> {% endfor %}</ul>
livros.html
listar_livros(request)
Model: classe Livro
Módulo de URLs
GET /livros
Cliente (browser)
URL
Banco de dados
Template
View
Model
E mais...
E mais...
6 linhas de código Python.
E mais...
6 linhas de código Python.
5 linhas de html/template.
E mais...
6 linhas de código Python.
5 linhas de html/template.SQL?
Amazing!!!
Amazing!!!
Asombroso!!!
Surpreendente!!!
i18n
Autenticação
@login_requireddef listar_livros(request): livros = Livro.objects.all() return render_to_response('livros.html', locals())
Autenticação
Controle de permissão
Controle de permissão
@permission_required('livros.pode_listar')def listar_livros(request): livros = Livro.objects.all() return render_to_response('livros.html', locals())
Django Forms
Django Forms
class LivroForm(Form): titulo = CharField(max_length = 100)
Django Forms
class LivroForm(Form): titulo = CharField(max_length = 100)
class Livro(Model): titulo = CharField(max_length = 100)
Django Forms
class LivroForm(ModelForm): class Meta: model = Livro
Django Forms
class LivroForm(ModelForm): class Meta: model = Livro
class Livro(Model): titulo = CharField(max_length = 100) autor = CharField(max_length = 255) descricao = CharField(max_length = 1024)
Django Forms
class LivroForm(ModelForm): class Meta: model = Livro
class Livro(Model): titulo = CharField(max_length = 100) autor = CharField(max_length = 255) descricao = CharField(max_length = 1024)
Tem um desses pra Fórmula 1?
Django Forms
class LivroForm(ModelForm): class Meta: model = Livro
class Livro(Model): titulo = CharField(max_length = 100) autor = CharField(max_length = 255) descricao = CharField(max_length = 1024)
Tá de sacanagem?!
Tem um desses pra Fórmula 1?
L10n
class PessoaForm(Form): nome = CharField(max_length = 100) cpf = CPFField() telefone = BRPhoneField()
L10n
class PessoaForm(Form): nome = CharField(max_length = 100) cpf = CPFField() telefone = BRPhoneField()
1/2
2/2
Da pra fazer melhor?
Django admin
class Livro(Model): titulo = CharField(max_length = 100)
class Livro(Model): titulo = CharField(max_length = 100)
admin.site.register(Livro)
class Livro(Model): titulo = CharField(max_length = 100)
admin.site.register(Livro)
(r'^admin/', include(admin.site.urls)),
class Livro(Model): titulo = CharField(max_length = 100)
admin.site.register(Livro)
(r'^admin/', include(admin.site.urls)),
Resultado?
4
Merece a dancinha
Tem mais?
Tem mais?
PaginaçãoViews genéricasFeedsMensagensCSRFSignalsTestes automatizados[...]
Algumas considerações
Eu não sei Python
Onde e como hospedar?
E agora?
www.djangoproject.com
www.djangobrasil.org
www.aprendendodjango.com
www.djangosites.org
groups.google.com/group/django-brasil
www.djangovideos.com
?/∞
DjangoO framework web para perfeccionistas com prazos