django: o framework web para perfeccionistas com prazos

Post on 15-Jan-2015

1.324 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

?/∞

@franciscosouzafrancisco@franciscosouza.net

DjangoO framework web para perfeccionistas com prazos

top related