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

Mais procurados

Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
Mateus Padua
 
Python na Web
Python na WebPython na Web
Python na Web
Igor Sobreira
 
Python e Django
Python e DjangoPython e Django
Python e Django
pugpe
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de django
rosenclever
 
Melhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQueryMelhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQuery
Harlley Oliveira
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e Django
Osvaldo Santana Neto
 
Html5 - O futuro da Web
Html5 - O futuro da WebHtml5 - O futuro da Web
Html5 - O futuro da Web
Jose Berardo
 
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
Rafael Jaques
 
Mashups: Criando Valor na Web 2.0 (BandTec)
Mashups: Criando Valor na Web 2.0 (BandTec)Mashups: Criando Valor na Web 2.0 (BandTec)
Mashups: Criando Valor na Web 2.0 (BandTec)
Carlos Duarte do Nascimento
 
Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on Rails
Julio Betta
 
Lib.SAPO.JS - Codebits2007
Lib.SAPO.JS  - Codebits2007Lib.SAPO.JS  - Codebits2007
Lib.SAPO.JS - Codebits2007Claudio Gamboa
 
Scraping for fun and glory annotated
Scraping for fun and glory annotatedScraping for fun and glory annotated
Scraping for fun and glory annotated
italomaia
 
Invasão e correção em sites
Invasão e correção em sitesInvasão e correção em sites
Invasão e correção em sites
Daskonet Dasko
 
JavaScript agora é sério (TDC 2011)
JavaScript agora é sério (TDC 2011)JavaScript agora é sério (TDC 2011)
JavaScript agora é sério (TDC 2011)Luciano Ramalho
 
Doctrine for Dummies
Doctrine for DummiesDoctrine for Dummies
Doctrine for Dummies
Ari Stopassola Junior
 
Scraping for fun and glory
Scraping for fun and gloryScraping for fun and glory
Scraping for fun and glory
italomaia
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
Claudio Gamboa
 
Curso javascript básico
Curso javascript básicoCurso javascript básico
Curso javascript básico
Vinicius Dacal Lopes
 

Mais procurados (20)

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

Destaque

Daniela Bordini - 30mai14 1º Congresso A&R SUS
Daniela Bordini - 30mai14 1º Congresso A&R SUSDaniela Bordini - 30mai14 1º Congresso A&R SUS
Daniela Bordini - 30mai14 1º Congresso A&R SUSAutismo & Realidade
 
Atividade 2-2 anapaulasg
Atividade 2-2 anapaulasgAtividade 2-2 anapaulasg
Atividade 2-2 anapaulasgisapizani
 
Apresentação para blog
Apresentação para blogApresentação para blog
Apresentação para blog32028212
 
Cartazes explicativos 1
Cartazes explicativos 1Cartazes explicativos 1
Cartazes explicativos 1
profnazira
 
Taller i herramientas de selección y degradado
Taller i   herramientas de selección y degradadoTaller i   herramientas de selección y degradado
Taller i herramientas de selección y degradadopalominoalvaro
 
3 mariaenel evangelio(1)
3 mariaenel evangelio(1)3 mariaenel evangelio(1)
3 mariaenel evangelio(1)
Adriana Gotsis
 
Farmacologia
FarmacologiaFarmacologia
Farmacologia
Francisco Javier
 

Destaque (8)

Daniela Bordini - 30mai14 1º Congresso A&R SUS
Daniela Bordini - 30mai14 1º Congresso A&R SUSDaniela Bordini - 30mai14 1º Congresso A&R SUS
Daniela Bordini - 30mai14 1º Congresso A&R SUS
 
Pedrinho
PedrinhoPedrinho
Pedrinho
 
Atividade 2-2 anapaulasg
Atividade 2-2 anapaulasgAtividade 2-2 anapaulasg
Atividade 2-2 anapaulasg
 
Apresentação para blog
Apresentação para blogApresentação para blog
Apresentação para blog
 
Cartazes explicativos 1
Cartazes explicativos 1Cartazes explicativos 1
Cartazes explicativos 1
 
Taller i herramientas de selección y degradado
Taller i   herramientas de selección y degradadoTaller i   herramientas de selección y degradado
Taller i herramientas de selección y degradado
 
3 mariaenel evangelio(1)
3 mariaenel evangelio(1)3 mariaenel evangelio(1)
3 mariaenel evangelio(1)
 
Farmacologia
FarmacologiaFarmacologia
Farmacologia
 

Semelhante a Django Tem Ritmo

Modern PHP
Modern PHPModern PHP
Python 08
Python 08Python 08
Python 08
Bruno Catão
 
Web Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaWeb Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciência
Sidney Roberto
 
Novidades do Django 1.2 e o que vem por ai
Novidades do Django 1.2 e o que vem por aiNovidades do Django 1.2 e o que vem por ai
Novidades do Django 1.2 e o que vem por ai
Marcos Petry
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
antonio sérgio nogueira
 
Aplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoAplicações rápidas para a Web com Django
Aplicações rápidas para a Web com Django
Freedom DayMS
 
Mashups: Criando Valor na Web 2.0
Mashups: Criando Valor na Web 2.0Mashups: Criando Valor na Web 2.0
Mashups: Criando Valor na Web 2.0
Carlos Duarte do Nascimento
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
Guilherme Blanco
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend Framework
Flávio Lisboa
 
Django Módulo Básico Parte II
Django Módulo Básico Parte IIDjango Módulo Básico Parte II
Django Módulo Básico Parte II
antonio sérgio nogueira
 
Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest Framework
Bruno Oliveira
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04Carlos Santos
 
O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019
Cassio Santos
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em python
Grupo de Testes Carioca
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
Paula Grangeiro
 
O que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seoO que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seointrofini
 
Doctrine for dummies
Doctrine for dummiesDoctrine for dummies
Doctrine for dummies
Ari Stopassola Junior
 

Semelhante a Django Tem Ritmo (20)

Aplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com DjangoAplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com Django
 
Modern PHP
Modern PHPModern PHP
Modern PHP
 
Python 08
Python 08Python 08
Python 08
 
Web Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaWeb Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciência
 
Novidades do Django 1.2 e o que vem por ai
Novidades do Django 1.2 e o que vem por aiNovidades do Django 1.2 e o que vem por ai
Novidades do Django 1.2 e o que vem por ai
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
 
Aplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoAplicações rápidas para a Web com Django
Aplicações rápidas para a Web com Django
 
Mashups: Criando Valor na Web 2.0
Mashups: Criando Valor na Web 2.0Mashups: Criando Valor na Web 2.0
Mashups: Criando Valor na Web 2.0
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend Framework
 
Django Módulo Básico Parte II
Django Módulo Básico Parte IIDjango Módulo Básico Parte II
Django Módulo Básico Parte II
 
Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest Framework
 
Django
DjangoDjango
Django
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04
 
O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019
 
Carreira php
Carreira phpCarreira php
Carreira php
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em python
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
 
O que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seoO que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seo
 
Doctrine for dummies
Doctrine for dummiesDoctrine for dummies
Doctrine for dummies
 

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