Django: O Framework web para perfeccionistas com prazos

Post on 15-Jan-2015

1.324 views 0 download

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 of Django: O Framework web para perfeccionistas com prazos

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

?/∞

@franciscosouzafrancisco@franciscosouza.net

DjangoO framework web para perfeccionistas com prazos