DJANGO TEM RITMO!




Palestrante: Italo MC Maia
Duração: 50min
Blog: http://tiny.cc/italo_blog
Site: http://tiny.cc/italo...
Frameworks Web

         Frameworks              Frameworks Python
      MyFaces - Java                TurboGears
  RubyOn...
Django!

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

                                 - Princípio...
Melhores Práticas!

      Baixo acoplamento             Lógica de domínio
      Urls/Visão/Modelo               auto-conti...
models.py

                   ORM padrão do Django

                            from django.models import *
      Solução ...
urls.py

              Mapeamento de Requisições

                           from django.conf.urls.defaults import *
     ...
forms.py

                   Geração de Formulários
     - Gerados -                        - Validação -
   A partir do m...
views.py

                       Lógica da Aplicação

                               from django.shortcuts import 
 - Cara...
Templates!

                    Mostrando Resultado!

             Tags                      Flexível
        {% tagname %...
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
  Formtoo...
contrib.admin

                   Interface Administrativa

                                      Acesso ao banco
        ...
Agradecimento
     Agradeço a presença de todos e aos meus
     colegas coordenadores por serem grandes
              pess...
Upcoming SlideShare
Loading in …5
×

Django Tem Ritmo

1,100 views
1,046 views

Published on

Slides utilizados no PythOnCeará - 2009

Published in: Technology, Design
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,100
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Django Tem Ritmo

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 10. base.html http://www.python.org.br http://www.pugce.org
  11. 11. page.html http://www.python.org.br http://www.pugce.org
  12. 12. Página montada HTML exibindo Page(pk='pugce') http://www.python.org.br http://www.pugce.org
  13. 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. 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. 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

×