Django para desenvolvimento web
                    Porque ser repetitivo ´ chato.
                                       ...
”Django focuses on automating as much as
   possible and adhering to the DRY principle.”
                               Dj...
Mais sobre o Django

     Framework web voltado ao desenvolvimento ´gil
                                              a


...
Mais sobre o Django

     Framework web voltado ao desenvolvimento ´gil
                                              a
  ...
Mais sobre o Django

     Framework web voltado ao desenvolvimento ´gil
                                              a
  ...
Mais sobre o Django

     Framework web voltado ao desenvolvimento ´gil
                                              a
  ...
Mais sobre o Django

     Framework web voltado ao desenvolvimento ´gil
                                              a
  ...
Principais caracter´
                   ısticas

      Desenvolvimento em Camadas (MVC)




        Arthur Furlan (afurlan...
Principais caracter´
                   ısticas

      Desenvolvimento em Camadas (MVC)
      Mapeamento Objeto Relacional...
Principais caracter´
                   ısticas

      Desenvolvimento em Camadas (MVC)
      Mapeamento Objeto Relacional...
Principais caracter´
                   ısticas

      Desenvolvimento em Camadas (MVC)
      Mapeamento Objeto Relacional...
Principais caracter´
                   ısticas

      Desenvolvimento em Camadas (MVC)
      Mapeamento Objeto Relacional...
Principais caracter´
                   ısticas

      Desenvolvimento em Camadas (MVC)
      Mapeamento Objeto Relacional...
Principais caracter´
                   ısticas

      Desenvolvimento em Camadas (MVC)
      Mapeamento Objeto Relacional...
Principais caracter´
                   ısticas

      Desenvolvimento em Camadas (MVC)
      Mapeamento Objeto Relacional...
Principais caracter´
                   ısticas

      Desenvolvimento em Camadas (MVC)
      Mapeamento Objeto Relacional...
O padr˜o MVC no Django
      a




      Arthur Furlan (afurlan) afurlan@afurlan.org   Django para desenvolvimento web
O padr˜o MVC no Django
      a




      Arthur Furlan (afurlan) afurlan@afurlan.org   Django para desenvolvimento web
O padr˜o MVC no Django
      a




  MVC X MTV
     Model (Model)
     Template (View)
     View (Controller)




       A...
Projetos e aplica¸oes
                 c˜

      Sistemas em Django s˜o divididos em projetos e aplica¸˜es
               ...
Projetos e aplica¸oes
                 c˜

      Sistemas em Django s˜o divididos em projetos e aplica¸˜es
               ...
Projetos e aplica¸oes
                 c˜

      Sistemas em Django s˜o divididos em projetos e aplica¸˜es
               ...
Projetos e aplica¸oes
                 c˜

      Sistemas em Django s˜o divididos em projetos e aplica¸˜es
               ...
Projetos e aplica¸oes
                 c˜

      Sistemas em Django s˜o divididos em projetos e aplica¸˜es
               ...
Projetos e aplica¸oes
                 c˜

      Sistemas em Django s˜o divididos em projetos e aplica¸˜es
               ...
Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como?
   a
Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como?
   a
     O Django ´ um framework database-driven
            ...
Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como?
   a
     O Django ´ um framework database-driven
            ...
Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como?
   a
     O Django ´ um framework database-driven
            ...
Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como?
   a
     O Django ´ um framework database-driven
            ...
Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como?
   a
     O Django ´ um framework database-driven
            ...
Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como?
   a
     O Django ´ um framework database-driven
            ...
”Talk is cheap, show me the code!”
Criando um novo projeto

     Um Cat´logo de Contatos:
           a


     $ django-admin startproject catalogo




      ...
Criando um novo projeto

     Um Cat´logo de Contatos:
           a


     $ django-admin startproject catalogo




      ...
Come¸ando pelo come¸o...
    c              c

     Configurando e criando o banco de dados:


     $ vim settings.py
     ...
Come¸ando pelo come¸o...
    c              c

     Configurando e criando o banco de dados:


     $ vim settings.py
     ...
Digam ”Ol´” para o Django!
         a

     Acessando o sistema:


     $ ./manage.py runserver




      Arthur Furlan (a...
Digam ”Ol´” para o Django!
         a

     Acessando o sistema:


     $ ./manage.py runserver




      Arthur Furlan (a...
Criando uma aplica¸˜o
                  ca

     Nossa primeira           (e, nesta apresenta¸˜o, unica)
                 ...
Criando uma aplica¸˜o
                  ca

     Nossa primeira           (e, nesta apresenta¸˜o, unica)
                 ...
Criando um novo modelo

        Criando o primeiro modelo da aplica¸˜o
                                           ca
    1...
Criando um novo modelo

        Criando o primeiro modelo da aplica¸˜o
                                           ca
    1...
Criando a primeira view

      Listagem dos objetos
      from django . shortcuts import re n de r_ t o_ r es po n se
    ...
Criando a primeira view

      Listagem dos objetos
      from django . shortcuts import re n de r_ t o_ r es po n se
    ...
Criando a segunda view

     Exibi¸˜o dos objetos
          ca
     from django . shortcuts import render_to_response , ge...
Criando a segunda view

     Exibi¸˜o dos objetos
          ca
     from django . shortcuts import render_to_response , ge...
Criando a terceira view

      Removendo objetos
      from django . shortcuts import g et_ obj ect _or_ 404
      from dj...
Criando a terceira view

      Removendo objetos
      from django . shortcuts import g et_ obj ect _or_ 404
      from dj...
Criando a ultima view
          ´

      Edi¸˜o de objetos
         ca
      from    django . core . urlresolvers import r...
Criando a ultima view
          ´

      Template
      {% extends " base . html " %}

      {% block title %}
      {% if...
Mapeando URLs para as views

       URLs do projeto
   1   from django . conf . urls . defaults import *
   2
   3   urlpa...
Mapeando URLs para as views

        URLs do projeto
   1    from django . conf . urls . defaults import *
   2
   3    ur...
Reaproveitando mais, escrevendo menos...

      Se eu quiser criar outro modelo, qual a diferen¸a?
                       ...
Reaproveitando mais, escrevendo menos...

      Se eu quiser criar outro modelo, qual a diferen¸a? O modelo
              ...
Reaproveitando mais, escrevendo menos...

      Se eu quiser criar outro modelo, qual a diferen¸a? O modelo
              ...
Reaproveitando mais, escrevendo menos...

      Se eu quiser criar outro modelo, qual a diferen¸a? O modelo
              ...
Mapeando URLs para as views... com Generic Views

          Mapeamento de URLs utilizando Generic Views

  from django . c...
Telas da aplica¸˜o
               ca




       Arthur Furlan (afurlan) afurlan@afurlan.org   Django para desenvolvimento ...
Telas da aplica¸˜o
               ca




       Arthur Furlan (afurlan) afurlan@afurlan.org   Django para desenvolvimento ...
Telas da aplica¸˜o
               ca




       Arthur Furlan (afurlan) afurlan@afurlan.org   Django para desenvolvimento ...
Telas da aplica¸˜o
               ca




       Arthur Furlan (afurlan) afurlan@afurlan.org   Django para desenvolvimento ...
Telas da aplica¸˜o
               ca




       Arthur Furlan (afurlan) afurlan@afurlan.org   Django para desenvolvimento ...
Telas da aplica¸˜o
               ca




       Arthur Furlan (afurlan) afurlan@afurlan.org   Django para desenvolvimento ...
Telas da aplica¸˜o
               ca




       Arthur Furlan (afurlan) afurlan@afurlan.org   Django para desenvolvimento ...
Telas da aplica¸˜o
               ca




       Arthur Furlan (afurlan) afurlan@afurlan.org   Django para desenvolvimento ...
Isso ´ s´ a ponta do iceberg...
     e o
      O Django tem muitas outras coisas interessantes:




       Arthur Furlan (...
Isso ´ s´ a ponta do iceberg...
     e o
      O Django tem muitas outras coisas interessantes:
            Administra¸˜o
...
Isso ´ s´ a ponta do iceberg...
     e o
      O Django tem muitas outras coisas interessantes:
            Administra¸˜o
...
Isso ´ s´ a ponta do iceberg...
     e o
      O Django tem muitas outras coisas interessantes:
            Administra¸˜o
...
Isso ´ s´ a ponta do iceberg...
     e o
      O Django tem muitas outras coisas interessantes:
            Administra¸˜o
...
Isso ´ s´ a ponta do iceberg...
     e o
      O Django tem muitas outras coisas interessantes:
            Administra¸˜oc...
Isso ´ s´ a ponta do iceberg...
     e o
      O Django tem muitas outras coisas interessantes:
            Administra¸˜oc...
Isso ´ s´ a ponta do iceberg...
     e o
      O Django tem muitas outras coisas interessantes:
            Administra¸˜oc...
Isso ´ s´ a ponta do iceberg...
     e o
      O Django tem muitas outras coisas interessantes:
            Administra¸˜oc...
Isso ´ s´ a ponta do iceberg...
     e o
      O Django tem muitas outras coisas interessantes:
            Administra¸˜oc...
Isso ´ s´ a ponta do iceberg...
     e o
      O Django tem muitas outras coisas interessantes:
            Administra¸˜oc...
Fim



                        Obrigado! D´vidas?
                                   u



  http://www.slideshare.net/afur...
Upcoming SlideShare
Loading in...5
×

Django para desenvolvimento web; porque ser repetitivo é chato.

4,517

Published on

Apresenta algumas das principais características do Django. Mostra os conceitos por trás do framework e ilusta como o desenvolvedor consegue utilizar suas funcionalidades para produzir código mais rápido porém sem abrir mão da qualidade.

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,517
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
235
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Django para desenvolvimento web; porque ser repetitivo é chato.

  1. 1. Django para desenvolvimento web Porque ser repetitivo ´ chato. e Arthur Furlan (afurlan) afurlan@afurlan.org 11 de Maio de 2010 Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  2. 2. ”Django focuses on automating as much as possible and adhering to the DRY principle.” Django Project - http://djangoproject.com
  3. 3. Mais sobre o Django Framework web voltado ao desenvolvimento ´gil a Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  4. 4. Mais sobre o Django Framework web voltado ao desenvolvimento ´gil a Torna f´cil e r´pido tarefas simples do desenvolvimento web a a Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  5. 5. Mais sobre o Django Framework web voltado ao desenvolvimento ´gil a Torna f´cil e r´pido tarefas simples do desenvolvimento web a a Escrito com a linguagem de programa¸˜o Python ca Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  6. 6. Mais sobre o Django Framework web voltado ao desenvolvimento ´gil a Torna f´cil e r´pido tarefas simples do desenvolvimento web a a Escrito com a linguagem de programa¸˜o Python ca Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  7. 7. Mais sobre o Django Framework web voltado ao desenvolvimento ´gil a Torna f´cil e r´pido tarefas simples do desenvolvimento web a a Escrito com a linguagem de programa¸˜o Python ca Django Reinhardt Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  8. 8. Principais caracter´ ısticas Desenvolvimento em Camadas (MVC) Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  9. 9. Principais caracter´ ısticas Desenvolvimento em Camadas (MVC) Mapeamento Objeto Relacional (ORM) Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  10. 10. Principais caracter´ ısticas Desenvolvimento em Camadas (MVC) Mapeamento Objeto Relacional (ORM) Desenvolvimento dirigido a testes (TDD) Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  11. 11. Principais caracter´ ısticas Desenvolvimento em Camadas (MVC) Mapeamento Objeto Relacional (ORM) Desenvolvimento dirigido a testes (TDD) Interface administrativa Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  12. 12. Principais caracter´ ısticas Desenvolvimento em Camadas (MVC) Mapeamento Objeto Relacional (ORM) Desenvolvimento dirigido a testes (TDD) Interface administrativa Sistema de templates Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  13. 13. Principais caracter´ ısticas Desenvolvimento em Camadas (MVC) Mapeamento Objeto Relacional (ORM) Desenvolvimento dirigido a testes (TDD) Interface administrativa Sistema de templates Mapeamento flex´ de URLs ıvel Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  14. 14. Principais caracter´ ısticas Desenvolvimento em Camadas (MVC) Mapeamento Objeto Relacional (ORM) Desenvolvimento dirigido a testes (TDD) Interface administrativa Sistema de templates Mapeamento flex´ de URLs ıvel Sistema de cache Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  15. 15. Principais caracter´ ısticas Desenvolvimento em Camadas (MVC) Mapeamento Objeto Relacional (ORM) Desenvolvimento dirigido a testes (TDD) Interface administrativa Sistema de templates Mapeamento flex´ de URLs ıvel Sistema de cache Internacionaliza¸˜o ca Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  16. 16. Principais caracter´ ısticas Desenvolvimento em Camadas (MVC) Mapeamento Objeto Relacional (ORM) Desenvolvimento dirigido a testes (TDD) Interface administrativa Sistema de templates Mapeamento flex´ de URLs ıvel Sistema de cache Internacionaliza¸˜o ca Reusabilidade (DRY) Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  17. 17. O padr˜o MVC no Django a Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  18. 18. O padr˜o MVC no Django a Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  19. 19. O padr˜o MVC no Django a MVC X MTV Model (Model) Template (View) View (Controller) Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  20. 20. Projetos e aplica¸oes c˜ Sistemas em Django s˜o divididos em projetos e aplica¸˜es a co Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  21. 21. Projetos e aplica¸oes c˜ Sistemas em Django s˜o divididos em projetos e aplica¸˜es a co Um projeto pode conter v´rias aplica¸˜es a co Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  22. 22. Projetos e aplica¸oes c˜ Sistemas em Django s˜o divididos em projetos e aplica¸˜es a co Um projeto pode conter v´rias aplica¸˜es a co Uma aplica¸˜o pode fazer parte de v´rios projetos ca a Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  23. 23. Projetos e aplica¸oes c˜ Sistemas em Django s˜o divididos em projetos e aplica¸˜es a co Um projeto pode conter v´rias aplica¸˜es a co Uma aplica¸˜o pode fazer parte de v´rios projetos ca a Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  24. 24. Projetos e aplica¸oes c˜ Sistemas em Django s˜o divididos em projetos e aplica¸˜es a co Um projeto pode conter v´rias aplica¸˜es a co Uma aplica¸˜o pode fazer parte de v´rios projetos ca a O que ´ um projeto Django? e Uma instˆncia de Django: configura¸˜es, aplica¸˜es, etc. a co co Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  25. 25. Projetos e aplica¸oes c˜ Sistemas em Django s˜o divididos em projetos e aplica¸˜es a co Um projeto pode conter v´rias aplica¸˜es a co Uma aplica¸˜o pode fazer parte de v´rios projetos ca a O que ´ um projeto Django? e Uma instˆncia de Django: configura¸˜es, aplica¸˜es, etc. a co co O que ´ uma aplica¸˜o Django? e ca Qualquer trecho de c´digo que possa ser reutilizado o Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  26. 26. Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como? a
  27. 27. Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como? a O Django ´ um framework database-driven e
  28. 28. Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como? a O Django ´ um framework database-driven e Vocˆ define suas regras de neg´cio no modelo e o
  29. 29. Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como? a O Django ´ um framework database-driven e Vocˆ define suas regras de neg´cio no modelo e o Camadas superiores herdam essas informa¸˜es co
  30. 30. Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como? a O Django ´ um framework database-driven e Vocˆ define suas regras de neg´cio no modelo e o Camadas superiores herdam essas informa¸˜es co Atributos
  31. 31. Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como? a O Django ´ um framework database-driven e Vocˆ define suas regras de neg´cio no modelo e o Camadas superiores herdam essas informa¸˜es co Atributos Informa¸˜es co
  32. 32. Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como? a O Django ´ um framework database-driven e Vocˆ define suas regras de neg´cio no modelo e o Camadas superiores herdam essas informa¸˜es co Atributos Informa¸˜es co Valida¸˜es co
  33. 33. ”Talk is cheap, show me the code!”
  34. 34. Criando um novo projeto Um Cat´logo de Contatos: a $ django-admin startproject catalogo Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  35. 35. Criando um novo projeto Um Cat´logo de Contatos: a $ django-admin startproject catalogo Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  36. 36. Come¸ando pelo come¸o... c c Configurando e criando o banco de dados: $ vim settings.py ... DATABASE_ENGINE = ’ p o s tg r e sq l _ ps y c op g 2 ’ DATABASE_NAME = ’ catalogo ’ DATABASE_USER = ’ catalogo ’ DATABASE_PASSWOR D = ’ ****** ’ DATABASE_HOST = ’ ’ DATABASE_PORT = ’ ’ ... Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  37. 37. Come¸ando pelo come¸o... c c Configurando e criando o banco de dados: $ vim settings.py ... DATABASE_ENGINE = ’ p o s tg r e sq l _ ps y c op g 2 ’ DATABASE_NAME = ’ catalogo ’ DATABASE_USER = ’ catalogo ’ DATABASE_PASSWOR D = ’ ****** ’ DATABASE_HOST = ’ ’ DATABASE_PORT = ’ ’ ... $ ./manage.py syncdb Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  38. 38. Digam ”Ol´” para o Django! a Acessando o sistema: $ ./manage.py runserver Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  39. 39. Digam ”Ol´” para o Django! a Acessando o sistema: $ ./manage.py runserver Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  40. 40. Criando uma aplica¸˜o ca Nossa primeira (e, nesta apresenta¸˜o, unica) ca ´ aplica¸˜o: ca $ django-admin startapp contatos Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  41. 41. Criando uma aplica¸˜o ca Nossa primeira (e, nesta apresenta¸˜o, unica) ca ´ aplica¸˜o: ca $ django-admin startapp contatos Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  42. 42. Criando um novo modelo Criando o primeiro modelo da aplica¸˜o ca 1 from django . db import models 2 from django . core . urlresolvers import reverse 3 4 class Pessoa ( models . Model ): 5 name = models . CharField ( max_length =60) 6 email = models . EmailField ( unique = True ) 7 8 def __unicode__ ( self ): 9 return ’ "% s " <%s > ’ % ( self . name , self . email ) 10 11 def get_absolute_url ( self ): 12 return reverse ( ’ pessoa - view ’ , args =[ self . id ]) Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  43. 43. Criando um novo modelo Criando o primeiro modelo da aplica¸˜o ca 1 from django . db import models 2 from django . core . urlresolvers import reverse 3 4 class Pessoa ( models . Model ): 5 name = models . CharField ( max_length =60) 6 email = models . EmailField ( unique = True ) 7 8 def __unicode__ ( self ): 9 return ’ "% s " <%s > ’ % ( self . name , self . email ) 10 11 def get_absolute_url ( self ): 12 return reverse ( ’ pessoa - view ’ , args =[ self . id ]) Criando o formul´rio para o modelo Pessoa a 1 from django . forms import ModelForm 2 from catalogo . apps . contatos . models import Pessoa 3 4 class PessoaForm ( ModelForm ): 5 class Meta : 6 model = Pessoa Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  44. 44. Criando a primeira view Listagem dos objetos from django . shortcuts import re n de r_ t o_ r es po n se from django . template import RequestContext from catalogo . apps . contatos . models import Pessoa def pessoa_list ( request ): # obtem a lista de pessoas object_list = Pessoa . objects . all () # envia os dados para o template return r e nd e r_ to _ re s po ns e ( ’ pessoa_list . html ’ , locals () , context_instance = RequestContext ( request )) Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  45. 45. Criando a primeira view Listagem dos objetos from django . shortcuts import re n de r_ t o_ r es po n se from django . template import RequestContext from catalogo . apps . contatos . models import Pessoa def pessoa_list ( request ): # obtem a lista de pessoas object_list = Pessoa . objects . all () # envia os dados para o template return r e nd e r_ to _ re s po ns e ( ’ pessoa_list . html ’ , locals () , context_instance = RequestContext ( request )) Template {% extends " base . html " %} {% block title %} Pessoas {% endblock %} {% block body %} <a href = " {% url pessoa - insert %} " > Inserir </ a > < br / > < br / > {% for object in object_list %} <a href = " {{ object . get_absolute_url }} " > {{ object }} </ a > ( <a href = " {% url pessoa - update object . id %} " > Editar </ a > | <a href = " {% url pessoa - delete object . id %} " > Apagar </ a >) < br / > {% endfor %} {% endblock %} Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  46. 46. Criando a segunda view Exibi¸˜o dos objetos ca from django . shortcuts import render_to_response , ge t_o bjec t_o r_4 04 from django . template import RequestContext from catalogo . apps . contatos . models import Pessoa def pessoa_view ( request , object_id ): # obtem a pessoa a ser exibida object = get _ob jec t_o r_4 04 ( Pessoa , id = object_id ) # envia os dados para o template return r e nd e r_ to _ re s po ns e ( ’ pessoa_view . html ’ , locals () , context_instance = RequestContext ( request )) Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  47. 47. Criando a segunda view Exibi¸˜o dos objetos ca from django . shortcuts import render_to_response , ge t_o bjec t_o r_4 04 from django . template import RequestContext from catalogo . apps . contatos . models import Pessoa def pessoa_view ( request , object_id ): # obtem a pessoa a ser exibida object = get _ob jec t_o r_4 04 ( Pessoa , id = object_id ) # envia os dados para o template return r e nd e r_ to _ re s po ns e ( ’ pessoa_view . html ’ , locals () , context_instance = RequestContext ( request )) Template {% extends " base . html " %} {% block title %} Exibir pessoa {% endblock %} {% block body %} <b > Nome : </ b > {{ object . name }} < br / > <b > Email : </ b > {{ object . email }} < br / > < br / > <a href = " {% url pessoa - list %} " > Voltar </ a > {% endblock %} Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  48. 48. Criando a terceira view Removendo objetos from django . shortcuts import g et_ obj ect _or_ 404 from django . http import H t t p R e s p o n s e R e d i r e c t from catalogo . apps . contatos . models import Pessoa def pessoa_delete ( request , object_id ): # obtem a pessoa a ser apagadao object = get _ob jec t_o r_4 04 ( Pessoa , id = object_id ) object . delete () # redireciona para a listagem de objetos return H t t p R e s p o n s e R e d i r e c t ( reverse ( ’ pessoa - list ’ )) Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  49. 49. Criando a terceira view Removendo objetos from django . shortcuts import g et_ obj ect _or_ 404 from django . http import H t t p R e s p o n s e R e d i r e c t from catalogo . apps . contatos . models import Pessoa def pessoa_delete ( request , object_id ): # obtem a pessoa a ser apagadao object = get _ob jec t_o r_4 04 ( Pessoa , id = object_id ) object . delete () # redireciona para a listagem de objetos return H t t p R e s p o n s e R e d i r e c t ( reverse ( ’ pessoa - list ’ )) Template: n˜o tem a Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  50. 50. Criando a ultima view ´ Edi¸˜o de objetos ca from django . core . urlresolvers import reverse from django . shortcuts import render_to_response , ge t_o bjec t_o r_4 04 from django . template import RequestContext from django . http import H t t p R e s p o n s e R e d i r e c t from catalogo . apps . contatos . models import Pessoa from catalogo . apps . contatos . forms import PessoaForm def pessoa_form ( request , object_id = None ): # carrega o objeto ( se houver ) e inicializa o formulario instance = ge t_ob jec t_o r_4 04 ( Pessoa , id = object_id ) if object_id else None form = PessoaForm ( instance = instance ) # valida e altera o objeto ( caso a validacao esteja OK ) if request . method == ’ POST ’: form = PessoaForm ( request . POST , instance = instance ) if form . is_valid (): form . save () return H t t p R e s p o n s e R e d i r e c t ( reverse ( ’ pessoa - list ’ )) # envia novamente para o formulario return r e nd e r_ to _ re s po ns e ( ’ pessoa_form . html ’ , locals () , context_instance = RequestContext ( request )) Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  51. 51. Criando a ultima view ´ Template {% extends " base . html " %} {% block title %} {% if form . instance . id %} Editar {% else %} Inserir {% endif %} pessoa {% endblock %} {% block body %} < form method = " post " action = " . " > {{ form . as_p }} < input type = " submit " value = " Enviar " / > </ form > {% endblock %} Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  52. 52. Mapeando URLs para as views URLs do projeto 1 from django . conf . urls . defaults import * 2 3 urlpatterns = patterns ( ’ ’ , 4 url ( ’^ pessoa / ’ , include ( ’ catalogo . apps . contatos . urls ’)) , 5 ) Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  53. 53. Mapeando URLs para as views URLs do projeto 1 from django . conf . urls . defaults import * 2 3 urlpatterns = patterns ( ’ ’ , 4 url ( ’^ pessoa / ’ , include ( ’ catalogo . apps . contatos . urls ’)) , 5 ) URLs da aplica¸˜o ca 1 from django . conf . urls . defaults import * 2 3 urlpatterns = patterns ( ’ catalogo . apps . contatos ’ , 4 url ( ’^ $ ’ , ’ views . pessoa_list ’ , name = ’ pessoa - list ’) , 5 url ( ’^ form / $ ’ , ’ views . pessoa_form ’ , name = ’ pessoa - insert ’) , 6 url ( ’^ form /(? P < object_id > d +)/ $ ’ , ’ views . pessoa_form ’ , 7 name = ’ pessoa - update ’) , 8 url ( ’^ view /(? P < object_id > d +)/ $ ’ , ’ views . pessoa_view ’ , 9 name = ’ pessoa - view ’) , 10 url ( ’^ delete /(? P < object_id > d +)/ $ ’ , ’ views . pessoa_delete ’ , 11 name = ’ pessoa - delete ’) , 12 ) Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  54. 54. Reaproveitando mais, escrevendo menos... Se eu quiser criar outro modelo, qual a diferen¸a? c Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  55. 55. Reaproveitando mais, escrevendo menos... Se eu quiser criar outro modelo, qual a diferen¸a? O modelo c Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  56. 56. Reaproveitando mais, escrevendo menos... Se eu quiser criar outro modelo, qual a diferen¸a? O modelo c Por que n˜o criar algo gen´rico? a e Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  57. 57. Reaproveitando mais, escrevendo menos... Se eu quiser criar outro modelo, qual a diferen¸a? O modelo c Por que n˜o criar algo gen´rico? a e Generic Views! Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  58. 58. Mapeando URLs para as views... com Generic Views Mapeamento de URLs utilizando Generic Views from django . conf . urls . defaults import * from django . views . generic import create_update , list_detail from models import Pessoa list _dict_info = { ’ queryset ’: Pessoa . objects . all () , ’ template_name ’: ’ pessoa_list . html ’ } view _dict_info = { ’ queryset ’: Pessoa . objects . all () , ’ template_name ’: ’ pessoa_view . html ’ } i n s e r t _ d i ct_info = { ’ model ’: Pessoa , ’ po s t_ sa v e_ r ed ir e ct ’: ’/ pessoa / ’ , ’ template_name ’: ’ pessoa_form . html ’ , } d e l e t e _ d i ct_info = { ’ model ’: Pessoa , ’ p o s t _ d e l e t e _ r e d i r e c t ’: ’/ pessoa / ’ } u p d a t e _ d i ct_info = insert_dict_info urlpatterns = patterns ( ’ ’ , url ( ’^ $ ’ , list_detail . object_list , list_dict_info , name = ’ pessoa - list ’) , url ( ’^ form / $ ’ , create_update . create_object , insert_dict_info , name = ’ pessoa - insert ’) , url ( ’^ form /(? P < object_id > d +)/ $ ’ , create_update . update_object , update_dict_info , name = ’ pessoa - update ’) , url ( ’^ view /(? P < object_id > d +)/ $ ’ , list_detail . object_detail , view_dict_info , name = ’ pessoa - view ’) , url ( ’^ delete /(? P < object_id > d +)/ $ ’ , create_update . delete_object , delete_dict_info , name = ’ pessoa - delete ’) , ) Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  59. 59. Telas da aplica¸˜o ca Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  60. 60. Telas da aplica¸˜o ca Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  61. 61. Telas da aplica¸˜o ca Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  62. 62. Telas da aplica¸˜o ca Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  63. 63. Telas da aplica¸˜o ca Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  64. 64. Telas da aplica¸˜o ca Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  65. 65. Telas da aplica¸˜o ca Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  66. 66. Telas da aplica¸˜o ca Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  67. 67. Isso ´ s´ a ponta do iceberg... e o O Django tem muitas outras coisas interessantes: Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  68. 68. Isso ´ s´ a ponta do iceberg... e o O Django tem muitas outras coisas interessantes: Administra¸˜o ca Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  69. 69. Isso ´ s´ a ponta do iceberg... e o O Django tem muitas outras coisas interessantes: Administra¸˜o ca Flatpages Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  70. 70. Isso ´ s´ a ponta do iceberg... e o O Django tem muitas outras coisas interessantes: Administra¸˜o ca Flatpages Sitemaps Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  71. 71. Isso ´ s´ a ponta do iceberg... e o O Django tem muitas outras coisas interessantes: Administra¸˜o ca Flatpages Sitemaps Feeds Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  72. 72. Isso ´ s´ a ponta do iceberg... e o O Django tem muitas outras coisas interessantes: Administra¸˜oca Flatpages Sitemaps Feeds Autentica¸˜o ca Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  73. 73. Isso ´ s´ a ponta do iceberg... e o O Django tem muitas outras coisas interessantes: Administra¸˜oca Flatpages Sitemaps Feeds Autentica¸˜o ca Cache Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  74. 74. Isso ´ s´ a ponta do iceberg... e o O Django tem muitas outras coisas interessantes: Administra¸˜oca Flatpages Sitemaps Feeds Autentica¸˜o ca Cache ... Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  75. 75. Isso ´ s´ a ponta do iceberg... e o O Django tem muitas outras coisas interessantes: Administra¸˜oca Flatpages Sitemaps Feeds Autentica¸˜o ca Cache ... Reposit´rios de aplica¸˜es o co Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  76. 76. Isso ´ s´ a ponta do iceberg... e o O Django tem muitas outras coisas interessantes: Administra¸˜oca Flatpages Sitemaps Feeds Autentica¸˜o ca Cache ... Reposit´rios de aplica¸˜es o co http://djangoapps.org Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  77. 77. Isso ´ s´ a ponta do iceberg... e o O Django tem muitas outras coisas interessantes: Administra¸˜oca Flatpages Sitemaps Feeds Autentica¸˜o ca Cache ... Reposit´rios de aplica¸˜es o co http://djangoapps.org http://pinaxproject.com Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  78. 78. Fim Obrigado! D´vidas? u http://www.slideshare.net/afurlan/django-para-desenvolvimento-web-porque-ser-repetitivo-chato http://tinyurl.com/afurlan-django Arthur Furlan (afurlan) afurlan@afurlan.org http://blog.afurlan.org twitter: @arthurfurlan Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×