SlideShare uma empresa Scribd logo
DJANGO TEM RITMO!




Palestrante: Italo MC Maia
Duração: 50min
Blog: http://tiny.cc/italo_blog
Site: http://tiny.cc/italomaia
http://www.python.org.br          http://www.pugce.org
Frameworks Web

         Frameworks              Frameworks Python
      MyFaces - Java                TurboGears
  RubyOnRails - Ruby                  Web.Py
       Catalyst - Perl                Web2Py
         Kepler - Lua                 Pylons
       CakePHP - PHP                 Karrigell

http://www.python.org.br               http://www.pugce.org
Django!

Desenvolvido para “Lawrence Journal-World”
http://www.lawrence.com/

                                 - Princípios -
                                     ORM
                                      DRY
                                     KISS
                                  MTV (MVC)
                                    Rápido
                                   Escalável
                              Poucas dependências
http://www.python.org.br             http://www.pugce.org
Melhores Práticas!

      Baixo acoplamento             Lógica de domínio
      Urls/Visão/Modelo               auto-contida
   Explícito é melhor que                Modelo
           implícito                     Poliglota
       Menos mágica!                Internacionalização
             Enxuto                 Ajax e companhia
          Só o essencial!          XML, (X)HTML, JSON
           Produtivo                    Extensível
       - Código + Produto                TUDO!
http://www.python.org.br                  http://www.pugce.org
models.py

                   ORM padrão do Django

                            from django.models import *
      Solução InHouse       # define a classe/tabela no banco
                            class Page(models.Model):
         Lazy Queries          name=CharField(max_length=100)
                               slug=SlugField(primary_key=True)
        ActiveRecord           text=models.TextField()


     1to1, 1toM, MtoN       # cria uma página no banco
                            Page.objects.create(name='Pugce', slug='pugce',
   Independe do Banco       text='Amo tudo isso!')
                            pg = Page.objects.get(pk='pugce') # busca por PK
              Sinais        query = Page.objects.all() # todas as paginas!
                            # paginas que o nome comeca com 'P'
                            Page.objects.filter(name__startswith='P')

http://www.python.org.br                            http://www.pugce.org
urls.py

              Mapeamento de Requisições

                           from django.conf.urls.defaults import *
                           from django.contrib import admin
                           from cms import views
                           # acha modelos p/ o django-admin
          DRY              admin.autodiscover()

   Baixo acoplamento       # (<regex>, view.metodo ou include(modulo_url))
                           urlpatterns = patterns('',
    Exp. Regulares            (r'^admin/', include(admin.site.urls)),
                              (r'^accounts/(?P<username>[w_]+)/',
       RÁPIDO!!                  include('pugce.accounts.urls')),
                              url(r'^(?P<slug>[0-9A-Za-z-_.//]+)/$',
                                 views.page, name='cms-page')
                           )

http://www.python.org.br                           http://www.pugce.org
forms.py

                   Geração de Formulários
     - Gerados -                        - Validação -
   A partir do modelo                    Automática
     Manualmente                        Personalizada
                            from django import forms
                            from . import models
  - Características -       # form a partir de um modelo
      Sem HTML              class PageForm(forms.ModelForm):
                                 class Meta: model=models.Page
   Mapeamento auto.         # testando o formulário
                            page=models.Page.objects.get(pk='pugce')
  Tratamento de erros       frm=PageForm({“name”:”huguinho”}, instance=page)
                            if frm.is_valid(): frm.save()
                            else: print frm.errors
http://www.python.org.br                              http://www.pugce.org
views.py

                       Lógica da Aplicação

                               from django.shortcuts import 
 - Características -           render_to_response as rp
                               from . import models
       Simples
    Valida Acesso              # primeiro argumento deve ser a requisicao
                               def page(request, slug):
 Responde Requisições              # slug: identificador de uma Page
                                   pg = models.Page.objects.get(pk=slug)
   Acessa o Modelo                 rp_dict = pg.__dict__
Independe do Template
                                   if request.is_ajax(): # requisicao ajax?
  Ajax Transparente                     return rp('pg.json', rp_dict,
                                             mimetype='application/json')
                                   else: return rp('pg.html', rp_dict)

http://www.python.org.br                               http://www.pugce.org
Templates!

                    Mostrando Resultado!

             Tags                      Flexível
        {% tagname %}          Funciona com qualquer
            Variáveis          arquivo texto, seja XML,
                               HTML, XHTML, TXT...
             {{ var }}
             Filtros
                                 Melhores Práticas
            var|filtro
                             Separa Lógica e Apresentação


http://www.python.org.br                  http://www.pugce.org
base.html




http://www.python.org.br           http://www.pugce.org
page.html




http://www.python.org.br           http://www.pugce.org
Página montada

          HTML exibindo Page(pk='pugce')




http://www.python.org.br             http://www.pugce.org
contribs.*

    Admin                     Csrf       Humanize
 Contenttype                   Gis       Redirects
  Formtools                  Markup     Syndication
 Localflavor                  Sites      Comments
  Sitemaps                    Auth       Flatpages
  Admindocs                Databrowse     Sessions
                                        Webdesign

http://www.python.org.br                http://www.pugce.org
contrib.admin

                   Interface Administrativa

                                      Acesso ao banco
                                           Crud
                                       Automatizado
                                           Logs
                                        Permissões
                                       Personalizável

 fonte:djangobook.zinpep


http://www.python.org.br                http://www.pugce.org
Agradecimento
     Agradeço a presença de todos e aos meus
     colegas coordenadores por serem grandes
              pessoas e profissionais!


Mais informações em:
http://djangoproject.com/
http://www.djangobrasil.org/



http://www.python.org.br             http://www.pugce.org

Mais conteúdo relacionado

PDF
Django: Desenvolvendo uma aplicação web em minutos
KEY
Django - Desenvolvimento web ágil com Python
PDF
Treinamento Básico de Django
PPTX
PHPSP TestFest 2009
PPT
PHP e AJAX: do Request ao Framework
ODP
Desenvolvendo aplicações web com python e web2py
PDF
Minicurso de Django - Desenvolvimento ágil web com Django e Python
PPT
Aula javascript
Django: Desenvolvendo uma aplicação web em minutos
Django - Desenvolvimento web ágil com Python
Treinamento Básico de Django
PHPSP TestFest 2009
PHP e AJAX: do Request ao Framework
Desenvolvendo aplicações web com python e web2py
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Aula javascript

Mais procurados (20)

PDF
Tutorial Django + Python
PDF
Python na Web
PPT
Python e Django
PPT
Mini curso de django
PPT
Melhorando a Experiência do Usuário com JavaScript e jQuery
PDF
De Zero à Web com Python e Django
ODP
Html5 - O futuro da Web
PDF
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
PDF
Javascript aula 01 - visão geral
PDF
Mashups: Criando Valor na Web 2.0 (BandTec)
ODP
Introdução ao Desenvolvimento WEB com Ruby on Rails
PDF
Java script aula 02 - operadores
ODP
Lib.SAPO.JS - Codebits2007
PDF
Scraping for fun and glory annotated
PDF
Invasão e correção em sites
PDF
JavaScript agora é sério (TDC 2011)
PPTX
Doctrine for Dummies
PDF
Scraping for fun and glory
ODP
tmn - Introdução ao JavaScript
PDF
Curso javascript básico
Tutorial Django + Python
Python na Web
Python e Django
Mini curso de django
Melhorando a Experiência do Usuário com JavaScript e jQuery
De Zero à Web com Python e Django
Html5 - O futuro da Web
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
Javascript aula 01 - visão geral
Mashups: Criando Valor na Web 2.0 (BandTec)
Introdução ao Desenvolvimento WEB com Ruby on Rails
Java script aula 02 - operadores
Lib.SAPO.JS - Codebits2007
Scraping for fun and glory annotated
Invasão e correção em sites
JavaScript agora é sério (TDC 2011)
Doctrine for Dummies
Scraping for fun and glory
tmn - Introdução ao JavaScript
Curso javascript básico
Anúncio

Destaque (8)

PPSX
Daniela Bordini - 30mai14 1º Congresso A&R SUS
PPTX
Pedrinho
PPT
Atividade 2-2 anapaulasg
PPTX
Apresentação para blog
DOC
Cartazes explicativos 1
PDF
Taller i herramientas de selección y degradado
PPS
3 mariaenel evangelio(1)
PPTX
Farmacologia
Daniela Bordini - 30mai14 1º Congresso A&R SUS
Pedrinho
Atividade 2-2 anapaulasg
Apresentação para blog
Cartazes explicativos 1
Taller i herramientas de selección y degradado
3 mariaenel evangelio(1)
Farmacologia
Anúncio

Semelhante a Django Tem Ritmo (20)

PDF
Desbravando a web com python - Matheus Lima
PDF
PDF
Django Básico
PDF
Workshop Django
KEY
Python 08
PPT
Introdução ao framework Django
PDF
Desenvolvimento web ágil com python e web2py
PDF
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
PDF
Django Módulo Básico Parte II
KEY
Python 06
PDF
Django: desenvolvendo aplicações web de maneira simples e rápida!
ZIP
Python e Django na Globo.com
PDF
Desenvolvimento Ágil de Aplicações Web com Python e Django
ODP
Entendendo Framework Web com Python
ODP
Entendendo Frameworks web com Python
ODP
Django - Lightning Talk - We Web Conf
PDF
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
PDF
Python mudando o modo de desenvolver para a internet
PPTX
My first app django
PPTX
django.pptx
Desbravando a web com python - Matheus Lima
Django Básico
Workshop Django
Python 08
Introdução ao framework Django
Desenvolvimento web ágil com python e web2py
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte II
Python 06
Django: desenvolvendo aplicações web de maneira simples e rápida!
Python e Django na Globo.com
Desenvolvimento Ágil de Aplicações Web com Python e Django
Entendendo Framework Web com Python
Entendendo Frameworks web com Python
Django - Lightning Talk - We Web Conf
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a internet
My first app django
django.pptx

Último (19)

PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Aula 18 - Manipulacao De Arquivos python
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Processos na gestão de transportes, TM100 Col18
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Apple Pippin Uma breve introdução. - David Glotz
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
COBITxITIL-Entenda as diferença em uso governança TI
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Custos e liquidação no SAP Transportation Management, TM130 Col18
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Aula04-Academia Heri- Tecnologia Geral 2025
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Otimizador de planejamento e execução no SAP Transportation Management, TM120...

Django Tem Ritmo

  • 1. DJANGO TEM RITMO! Palestrante: Italo MC Maia Duração: 50min Blog: http://tiny.cc/italo_blog Site: http://tiny.cc/italomaia http://www.python.org.br http://www.pugce.org
  • 2. Frameworks Web Frameworks Frameworks Python MyFaces - Java TurboGears RubyOnRails - Ruby Web.Py Catalyst - Perl Web2Py Kepler - Lua Pylons CakePHP - PHP Karrigell http://www.python.org.br http://www.pugce.org
  • 3. Django! Desenvolvido para “Lawrence Journal-World” http://www.lawrence.com/ - Princípios - ORM DRY KISS MTV (MVC) Rápido Escalável Poucas dependências http://www.python.org.br http://www.pugce.org
  • 4. Melhores Práticas! Baixo acoplamento Lógica de domínio Urls/Visão/Modelo auto-contida Explícito é melhor que Modelo implícito Poliglota Menos mágica! Internacionalização Enxuto Ajax e companhia Só o essencial! XML, (X)HTML, JSON Produtivo Extensível - Código + Produto TUDO! http://www.python.org.br http://www.pugce.org
  • 5. models.py ORM padrão do Django from django.models import * Solução InHouse # define a classe/tabela no banco class Page(models.Model): Lazy Queries name=CharField(max_length=100) slug=SlugField(primary_key=True) ActiveRecord text=models.TextField() 1to1, 1toM, MtoN # cria uma página no banco Page.objects.create(name='Pugce', slug='pugce', Independe do Banco text='Amo tudo isso!') pg = Page.objects.get(pk='pugce') # busca por PK Sinais query = Page.objects.all() # todas as paginas! # paginas que o nome comeca com 'P' Page.objects.filter(name__startswith='P') http://www.python.org.br http://www.pugce.org
  • 6. urls.py Mapeamento de Requisições from django.conf.urls.defaults import * from django.contrib import admin from cms import views # acha modelos p/ o django-admin DRY admin.autodiscover() Baixo acoplamento # (<regex>, view.metodo ou include(modulo_url)) urlpatterns = patterns('', Exp. Regulares (r'^admin/', include(admin.site.urls)), (r'^accounts/(?P<username>[w_]+)/', RÁPIDO!! include('pugce.accounts.urls')), url(r'^(?P<slug>[0-9A-Za-z-_.//]+)/$', views.page, name='cms-page') ) http://www.python.org.br http://www.pugce.org
  • 7. forms.py Geração de Formulários - Gerados - - Validação - A partir do modelo Automática Manualmente Personalizada from django import forms from . import models - Características - # form a partir de um modelo Sem HTML class PageForm(forms.ModelForm): class Meta: model=models.Page Mapeamento auto. # testando o formulário page=models.Page.objects.get(pk='pugce') Tratamento de erros frm=PageForm({“name”:”huguinho”}, instance=page) if frm.is_valid(): frm.save() else: print frm.errors http://www.python.org.br http://www.pugce.org
  • 8. views.py Lógica da Aplicação from django.shortcuts import - Características - render_to_response as rp from . import models Simples Valida Acesso # primeiro argumento deve ser a requisicao def page(request, slug): Responde Requisições # slug: identificador de uma Page pg = models.Page.objects.get(pk=slug) Acessa o Modelo rp_dict = pg.__dict__ Independe do Template if request.is_ajax(): # requisicao ajax? Ajax Transparente return rp('pg.json', rp_dict, mimetype='application/json') else: return rp('pg.html', rp_dict) http://www.python.org.br http://www.pugce.org
  • 9. Templates! Mostrando Resultado! Tags Flexível {% tagname %} Funciona com qualquer Variáveis arquivo texto, seja XML, HTML, XHTML, TXT... {{ var }} Filtros Melhores Práticas var|filtro Separa Lógica e Apresentação http://www.python.org.br http://www.pugce.org
  • 10. base.html http://www.python.org.br http://www.pugce.org
  • 11. page.html http://www.python.org.br http://www.pugce.org
  • 12. Página montada HTML exibindo Page(pk='pugce') http://www.python.org.br http://www.pugce.org
  • 13. contribs.* Admin Csrf Humanize Contenttype Gis Redirects Formtools Markup Syndication Localflavor Sites Comments Sitemaps Auth Flatpages Admindocs Databrowse Sessions Webdesign http://www.python.org.br http://www.pugce.org
  • 14. contrib.admin Interface Administrativa Acesso ao banco Crud Automatizado Logs Permissões Personalizável fonte:djangobook.zinpep http://www.python.org.br http://www.pugce.org
  • 15. Agradecimento Agradeço a presença de todos e aos meus colegas coordenadores por serem grandes pessoas e profissionais! Mais informações em: http://djangoproject.com/ http://www.djangobrasil.org/ http://www.python.org.br http://www.pugce.org