Django: o framework web para perfeccionistas com prazos
-
Upload
francisco-souza -
Category
Technology
-
view
3.082 -
download
1
description
Transcript of Django: o framework web para perfeccionistas com prazos
![Page 1: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/1.jpg)
1
Boa noite pessoal, meu nome é Francisco :)
Hoje vivemos num tempo de pressa, de urgências e tudo mais. Temos prazos para tudo, e alguma pessoas estão sempre nos lembrando deles, e nos dando a ideia de que estamos atrasados.
![Page 2: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/2.jpg)
2
Desenvolvendo
![Page 3: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/3.jpg)
3
Desenvolvendo
aplicações web
![Page 4: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/4.jpg)
4
Desenvolvendo
aplicações webem tempo
![Page 5: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/5.jpg)
5
Desenvolvendo
aplicações webem tempo
RECORDE.
Esta pressa atingiu o desenvolvimento de software, e as pessoas estão sempre à busca de como desenvolver aplicações web em tempo recorde, mais rápido que todo mundo, para conquistar os clientes.
Vamos a uma análise de falso caso? :)
![Page 6: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/6.jpg)
6
Um cliente PRECISA de uma aplicação simples de notícias, enquetes e banners, com login para um sistema administrativo administrativo, onde essas notícias, enquetes e banners serão gerenciados.
![Page 7: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/7.jpg)
7
35O cliente procurou três empresas e elas disseram
que construiriam o sistema em 35 dias.
![Page 8: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/8.jpg)
8
30
A melhor proposta que o cliente consegue é 30 dias de uma empresa nova no mercado.
![Page 9: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/9.jpg)
9
20
O problema é que o cliente quer tudo isso em 20 dias, e está disposto a pagar por isso. Dinheiro não é problema para este cliente.
Você, que ama dinheiro e é um mestre de usabilidade, topa o projeto.
![Page 10: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/10.jpg)
10
E você é esperto.
Você conhece alguns sites que fornecem snippets de código prontinho pra você usar na sua aplicação, você baixa tudo, copia ...
![Page 11: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/11.jpg)
11
cola tudo, faz alguns ajustes
![Page 12: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/12.jpg)
12
Traduz as partes in english, junta tudo e
![Page 13: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/13.jpg)
13
10DEZ dias depois
![Page 14: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/14.jpg)
14
o código está pronto.
![Page 15: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/15.jpg)
15
O teclado mais rápido do Oeste.
Você vai até o seu cliente com a aplicação prontinha.
Ele fica realmente impressionado em te ver lá DEZ dias depois. Você terminou! Ele precisava da aplicação em 20 dias, você fez na metade do tempo.
A melhor proposta que ele recebeu antes de você era de 30 dias. Você foi três vezes mais rápido do que a melhor proposta.
O seu cliente tem plena certeza de que você é o cara mais rápido do mundo. E você provavelmente é.
O problema é que não é só a velocidade que importa...
![Page 16: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/16.jpg)
16
O teclado mais rápido do Oeste.
#$%&*&@#@#
#@$%
Depois de ver a aplicação “funcionando”, o seu cliente não mudou de ideia, ele continua te achando o mais rápido.
O título de teclado rápido do Oeste é seu, você é o mais rápido em escrever código. Mas desenvolver software não é só escrever código, desenvolver software não é só correr para escrever mais código em menos tempo.
![Page 17: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/17.jpg)
17
Você é o número 1 em velocidade, mas o seu cliente precisava de um produto de qualidade num tempo inferior ao tempo necessário para atingir tal qualidade.
Você deveria ter entregado um meio produto, mas você foi rápido o suficiente para entregar um produto meia boca.
Você ganhou um título. Você é rápido, você chega na frente, você é o melhor em algo.
O problema é que ser o melhor em algo que não é importante nem sempre é bom, e quando é bom,
![Page 18: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/18.jpg)
18
É bom só pra você.
[...]
![Page 19: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/19.jpg)
19
A satisfação do seu cliente é fundamental.
![Page 20: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/20.jpg)
20
DjangoO framework web para perfeccionistas com prazos
Hoje nós vamos falar de um framework para perfeccionistas com prazos, desenvolvedores que conhecem e respeitam os prazos, mas respeitam, acima de tudo, a qualidade do produto a ser desenvolvido.
![Page 21: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/21.jpg)
21quem é você?
Antes de seguir em frente, quero rapidamente conhecer vocês.
Alguém aqui conhece conhece e/ou tem experiênca com:
- O básico de Python?•- Orientação a Objetos?•- Desenvolvimento web?•- Estrutura de funcionamento da web (protocolo
HTTP, request, response)?
![Page 22: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/22.jpg)
22
Welcome to the Django!
Django.
O que é Django? Framework pra perceccionistas com prazo? Qqisso?!?!?! E aquele pônei?
![Page 23: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/23.jpg)
23
Django Pony, mascote não oficial do Django.
![Page 24: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/24.jpg)
24
Internacionalmente conhecido por suas aparições na televisão.
![Page 25: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/25.jpg)
25
Também costuma estar presente nas conferências de desenvolvimento de software.
![Page 26: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/26.jpg)
26
Inclusive apresentando palestras de alto nível.
![Page 27: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/27.jpg)
27
Mas é importante respeitar o Django Pony, pois ele pode te atacar repentinamente.
![Page 28: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/28.jpg)
28
E os ataques dele são mortais.
![Page 29: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/29.jpg)
29
mas qual é a relação?
Qual é a relação entre um pônei rosa e um framework web?
![Page 30: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/30.jpg)
30
Magia
Magia :)
![Page 31: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/31.jpg)
31
Já temos um cliente insatisfeito, eu já conheço vocês, vocês já conhecem um pônei rosa, tá na hora de conhecer esse tal de Django né?!
O Django é um framework, uma caixa de ferramentas à sua disposição para construir aplicações web de qualidade em tempo recorde.
![Page 32: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/32.jpg)
32
O Django foi criado para o portal do Lawrence Journal World, um jornal da cidade de Lawrence, no estado do Kansas, nos Estados Unidos.
![Page 33: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/33.jpg)
33
Django vem sido adotado em outros projetos de larga escala.
Na onda crescente de cloud computing, Django serviu como base para o projeto Nebula, plataforma de cloud computing da Nasa e para o App Engine, plataforma de cloud computing do Google.
![Page 34: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/34.jpg)
34
Abrindo a caixa
Sabemos que Django é como se fosse uma caixa de ferramentas. Vamos olhar dentro da nossa caixa de ferramentas e entendê-la melhor :)
![Page 35: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/35.jpg)
35
Orientado a aplicações
Django é orientado a aplicações, aplicações plugáveis.
Você tem blocos de montar que integram-se para a construção dos seus projetos. Você encontra várias aplicações reusáveis na internet.
![Page 36: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/36.jpg)
36
E você pode montar esses blocos com muita facilidade. Django é fácil, e lhe permite caminhar por um caminho de qualidade com relativa facilidade.
Se o seu projeto vai usar n aplicações plugáveis ou você vai desenvolver todas “no braço”, você certamente não encontrará tanta dificuldade e você provavelmente vai se divertir.
![Page 37: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/37.jpg)
37
Open source: Django é open source, pertence à comunidade, é meu, é seu.
Se você acha que Django tem um problema, você pode reportá-lo e até corrigi-lo. Você pode fazer um fork do Django para adequá-lo à sua necessidade, ou qualquer coisa do tipo :)
![Page 38: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/38.jpg)
38
MVC?Django é baseado em MVC? Eu trabalho nestas três
camadas?
![Page 39: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/39.jpg)
39
MVC?+-+/-
![Page 40: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/40.jpg)
40
Django organiza-se utilizando MTV: Model, template e view.
![Page 41: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/41.jpg)
41
Essa é a estrutura completa de funcionamento de um request/response no Django, mas não é importante agora entender isso :)
![Page 42: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/42.jpg)
42
Cliente (browser)
URLTemplate
View
Model
Banco de dados
Esta é uma estrutura mais simples. Útil o suficiente para o nosso exemplo.
Temos nosso browser, o Firefox, por exemplo. Ele vai acessar uma página de um sistema feito em Django.
![Page 43: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/43.jpg)
43
GET /livros
URLTemplate
View
Model
Banco de dados
A página a ser acessada está na URL /livros. O cliente faz então a requisição em /livros.
![Page 44: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/44.jpg)
44
GET /livros
Módulo de URLsTemplate
View
Model
Banco de dados
(r'^livros/$', 'views.listar_livros'),
Neste momento o módulo de URLs do Django entra em ação para detectar qual a view responsável por tratar o acesso à URL /livros.
A URL /livros está mapeada para a view listar_livros. Uma linha de código e esta URL está mapeada utilizando expressões regulares.
![Page 45: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/45.jpg)
45
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())
Uma view é uma função, a função listar_livros vai receber nosso request e tratá-lo para retornar um response.
Trata-se de um ponto “polêmico” do Django. No Django, uma view faz um trabalho semelhante ao trabalho feito por controllers em outros frameworks. Mas não se espante, não vamos escrever nenhum select na camada de interface ou injetar lógica de negócio lá.
O que acontece no Django é que a camada de interface não se chama view, e só. Enxergue apenas como uma questão de nomenclatura :)
![Page 46: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/46.jpg)
46
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())
A primeira linha da nossa função view faz uma chamada a uma classe Livro, um model. Um objeto que representa, no nosso sistema, o livro verdadeiramente falando. Esta classe também é responsável por fazer a comunicação com o banco de dados, então aqui estamos buscando todos os livros armazenados no banco de dados.
O código da classe é bem explicativo: mostra que um livro é um Model e tem um título.
![Page 47: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/47.jpg)
47
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())
Não importa o banco de dados.
O Django é capaz de lidar com inúmeros bancos de dados, e é bem provável que pra você não seja muito importante o que está abaixo da camada de modelo. A menos que você tenha um sistema muito grande.
Vamos voltar então à nossa view, que tem duas linhas de código. Já temos a lista de livros “em mãos”, agora podemos entregar ela para o nosso cliente, certo?
![Page 48: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/48.jpg)
48
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>
Antes, entregamos ao template engine do Django que processa tudo isso e gera a saída para o nosso cliente.
![Page 49: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/49.jpg)
49
livros.html
listar_livros(request)
Model: classe Livro
Módulo de URLs
GET /livros
A saída não é tão bonita, mas você vai poder contar com um designer esperto pra te ajudar com isso :)
![Page 50: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/50.jpg)
50
Cliente (browser)
URL
Banco de dados
Template
View
Model
E agora você pode entender de onde vem o MTV :)
![Page 51: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/51.jpg)
51
E mais...
E tem mais uma coisa que talvez você não tenha percebido ainda.
![Page 52: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/52.jpg)
52
E mais...
6 linhas de código Python.
Com seis linhas de código Python,
![Page 53: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/53.jpg)
53
E mais...
6 linhas de código Python.
5 linhas de html/template.
cinco linhas de código da template engine do Django
![Page 54: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/54.jpg)
54
E mais...
6 linhas de código Python.
5 linhas de html/template.SQL?
e NENHUMA linha SQL nós construímos uma listagem com todos os registros de uma entidade no banco de dados.
![Page 55: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/55.jpg)
55
Amazing!!!
Como diria o Steve Jobs: it's amazing! =D
![Page 56: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/56.jpg)
56
Amazing!!!
Asombroso!!!
Surpreendente!!!
i18nDjango tem um framework de internacionalização
extremamente simples de utilizar, que usa o gettext para traduzir termos.
Escrever aplicações em vários idiomas no Django é brincadeira de criança.
![Page 57: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/57.jpg)
57
Autenticação
Django também tem autenticação integrada, com cadastro de usuários e grupos, e gerenciamento de permissões.
![Page 58: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/58.jpg)
58
@login_requireddef listar_livros(request): livros = Livro.objects.all() return render_to_response('livros.html', locals())
Autenticação
Com mais uma linha de código, um simples decorator, poderíamos exigir que o usuário estivesse logado para ver a lista de livros.
![Page 59: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/59.jpg)
59
Controle de permissão
Junto ao cadastro de usuários, o sistema de autenticação do Django também integra controle de permissão.
![Page 60: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/60.jpg)
60
Controle de permissão
@permission_required('livros.pode_listar')def listar_livros(request): livros = Livro.objects.all() return render_to_response('livros.html', locals())
Trocando o login_required por permission_required, podemos criar uma permissão específica e dizer que apenas usuários ou grupos de usuários específicos teriam acesso àquela view.
![Page 61: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/61.jpg)
61Django Forms
Um outro recurso do Django bastante comentado é o framework de formulários, chamado Django Forms.
Vamos ver um pouco do Django Forms...
![Page 62: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/62.jpg)
62Django Forms
class LivroForm(Form): titulo = CharField(max_length = 100)
Aqui estamos definindo um formulário chamado LivroForm que tem um campo título.
![Page 63: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/63.jpg)
63Django Forms
class LivroForm(Form): titulo = CharField(max_length = 100)
class Livro(Model): titulo = CharField(max_length = 100)
Note que definimos o formulário praticamente da mesma forma que definimos o model, estamos repetindo código né?!
Isso não é muito bom, e até fere um dos princípios do Django. Será que não teria uma forma de somar o Model e o Form?
![Page 64: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/64.jpg)
64Django Forms
class LivroForm(ModelForm): class Meta: model = Livro
ModelForm :)
Criamos o form e dizemos qual é o model “dono” dele.
![Page 65: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/65.jpg)
65Django 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)
Assim, independente de quantos campos existirem no model, todos vão ser acessados no form e serão exibidos na tela quando formos mostrar o form.
O formulário também vai herdar toda a validação do model, assim, teremos formulários prontinhos para nossas aplicações web só esperando para serem exibidos nos templates e tratados nas views.
É mágico e faz você andar muito mais rápido.
![Page 66: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/66.jpg)
66Django 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?
[...]
![Page 67: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/67.jpg)
67Django 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?
Não tem na F1, mas tem no Django, de verdade :)
![Page 68: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/68.jpg)
68
L10n
class PessoaForm(Form): nome = CharField(max_length = 100) cpf = CPFField() telefone = BRPhoneField()
Além da internacionaliação e do Django Forms, também podemos contar com os recursos de Localization do Django.
Lembra que os formulários têm validação automática? Assim, podemos validar o tamanho do campo, se ele foi preenchido ou não, se ele é inteiro, se é uma data.
Com os recursos de Localization do Django, podemos ir além, e validar automagicamente se um campo é um CPF, um CNPJ, um CEP ou um telefone no formato brasileiro.
![Page 69: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/69.jpg)
69
L10n
class PessoaForm(Form): nome = CharField(max_length = 100) cpf = CPFField() telefone = BRPhoneField()
Totalmente assustador.
![Page 70: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/70.jpg)
70
1/2
Bom, esse é um momento em que eu preciso respirar e preciso de interação. Eu preciso de no mínimo duas perguntas para seguir com a palestra, então agora é com vocês.
O número grande é o contador de perguntas, preciso que vocês façam ele chegar no dois para prosseguirmos.
Vamos à pergunta número 1?
![Page 71: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/71.jpg)
71
2/2
Pergunta número 2.
![Page 72: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/72.jpg)
72
Da pra fazer melhor?
Ainda tem mais coisas?
Da pra melhorar a situação? o__O'
![Page 73: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/73.jpg)
73
Django admin
Sim :)
Não sei quantas pessoas aqui já construíram áreas administrativas em sites para gerir conteúdo e entidades. Por exemplo, um sisteminha de notícia com login para você publicar essas notícias. Definitivamente, é algo trabalhoso e que, por vezes, pode fazer com que o desenvolver perca alguma noite de sono.
É claro que com recursos de L10n, i18n e o Django Forms, tudo isso fica MUITO mais fácil, mas o Django ainda tem algo muito melhor para te dar noites tranquilas de sono.
![Page 74: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/74.jpg)
74
class Livro(Model): titulo = CharField(max_length = 100)
Vamos à prática, bem melhor assim.
Lembram-se do nosso model Livro? Ele tem um título, certo? Então aí está ele.
![Page 75: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/75.jpg)
75
class Livro(Model): titulo = CharField(max_length = 100)
admin.site.register(Livro)
Vamos chamar o tal do admin, dentro do site do admin, vamos pedir para ele registrar o nosso model, a nossa classe Livro.
Tudo tranquilo até aqui?
![Page 76: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/76.jpg)
76
class Livro(Model): titulo = CharField(max_length = 100)
admin.site.register(Livro)
(r'^admin/', include(admin.site.urls)),
Lembra lá atrás quando fizemos um mapeamento de uma URL para acessar a listagem de views? Precisamos fazer algo semelhante com o admin, precisamos dar uma URL a ele, e vamos entregar a ele a URL /admin.
![Page 77: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/77.jpg)
77
class Livro(Model): titulo = CharField(max_length = 100)
admin.site.register(Livro)
(r'^admin/', include(admin.site.urls)),
Resultado?
Então, o que acontece quando acessamos /admin, que foi a URL mapeada?
![Page 78: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/78.jpg)
78
Tela de login, é uma área administrativa né?!
Lembra da chatisse de implementar uma gerência de usuários, sistema de login, tratar sessão, colar tudo e traduzir lá do começo? Esquece, existem formas mais legais e inteligentes de gerenciar isso.
Apenas preencha o nome de usuário e a senha, e clique em Acessar.
![Page 79: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/79.jpg)
79
E cá estamos. Na página inicial de administração. Note que não está em inglês :) i18n é a lei =P
Veja na coluna da direita um histórico de ações do usuário (que está vazio, obviamente).
O mais importante está em destaque, nosso model Livros está ali, com duas opções: Adicionar e Modificar.
![Page 80: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/80.jpg)
80
Clicando em Adicionar, temos uma tela para o cadastro do Livro. Os campos exibidos são os atributos do model, que no nosso caso é apenas titulo.
![Page 81: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/81.jpg)
81
Se clicarmos em Salvar sem preencher o título, olha que lindo: ele valida, em português também!
![Page 82: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/82.jpg)
82
Então preenchemos o título.
![Page 83: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/83.jpg)
83
E clicamos em salvar para ver a listagem e a mensagem de que nosso amado livro foi salvo com sucesso no banco de dados =D
![Page 84: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/84.jpg)
84
E se clicamos sobre o livro, podemos editá-lo ou excluí-lo.
E sabe o que é realmente bacana nisso tudo?
![Page 85: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/85.jpg)
85
44 linhas de código.
[...]
E defintivamente, eu preciso dizer que o Django Admin
![Page 86: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/86.jpg)
86
Merece a dancinha
merece a dancinha do Gato Matrix.
![Page 87: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/87.jpg)
87
Tem mais?
Então, depois disso tudo, tem mais?
![Page 88: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/88.jpg)
88
Tem mais?
PaginaçãoViews genéricasFeedsMensagensCSRFSignalsTestes automatizados[...]
Com certeza.
Django conta com uma bilbioteca de paginação nativa;
views genéricas para automatizar CRUDs;
views para feeds (Atom ou RSS, o que você quiser :D);
Um framework de mensagens simples e poderoso;
CSRF nativo
Signals
Suporte nativo a testes, com cliente de testes
Etc etc etc
![Page 89: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/89.jpg)
89
Algumas considerações
Antes de finalizar, vamos a algumas considerações.
![Page 90: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/90.jpg)
90
Eu não sei Python
Eu não sei Python, tem problema?
A vantagem de conhecer profundamente a linguagem Python é que ao desenvolver aplicações em Django, podemos explorar melhor os melhores recursos da linguagem Python para construir o seu software.
Assim, o ideal é aprender Django e Python paralelamente, ou até aprender Python antes, e não apenas o suficiente de Python para usar o Django Admin :)
![Page 91: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/91.jpg)
91
Onde e como hospedar?
“Python é a única linguagem de programação com mais frameworks web do que palavras reservadas”. Esta é uma afirmação relativamente famosa no mundo Python.
Python tem um problema de excesso de frameworks, e com isso veio um problema na forma como os frameworks se comunicavam com os servidores web.
Para solucionar o problema, foi criado o WSGI, que padroniza a forma como frameworks Python se comunicam com servidores web.
Assim, basta que o servidor web tenha uma interface WSGI que você poderá utilizar o Django ou outro framework Python.
Alguns servidores que podem ser utilizados: Apache, IIS, Nginx, Passenger, dentre outros.
![Page 92: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/92.jpg)
92
E agora?
E agora, o que fazer? Como prosseguir com o Django? Quais são os links bacanas pra seguir em frente?
![Page 93: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/93.jpg)
93www.djangoproject.com
Site oficial: www.djangoproject.com =)
![Page 94: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/94.jpg)
94www.djangobrasil.org
Site da comunidade Django Brasil: www.djangobrasil.org
![Page 95: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/95.jpg)
95www.aprendendodjango.com
Quer aprender Django fácil fácil?
Aprendendo Django no Planeta Terra é um livro gratuito, disponível em formato hipertexto (online) e PDF.
Veja o site: www.aprendendodjango.com
![Page 96: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/96.jpg)
96www.djangosites.org
Sentiu falta de alguns sites em Django? Confira neste link: www.djangosites.org
![Page 97: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/97.jpg)
97
groups.google.com/group/django-brasil
Conheça o grupo de desenvolvedores de Django no Brasil inteiro, lá você vai encontrar feras e o apoio necessário para se tornar um ninja em Django.
http://groups.google.com/group/django-brasil
![Page 98: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/98.jpg)
98www.djangovideos.com
O site Django Videos conta com vários vídeos sobre Django, contando com screencasts, palestras, etc. :)
www.djangovideos.com
![Page 99: Django: o framework web para perfeccionistas com prazos](https://reader031.fdocumentos.com/reader031/viewer/2022020101/54b6cb134a79599d1b8b45c0/html5/thumbnails/99.jpg)
99
?/∞
Agora é com vocês, perguntem à vontade ;)