django tem ritmo

15
DJANGO TEM RITMO! http://www.pugce.org http://www.python.org.br Palestrante: Italo MC Maia Duração: 50min Blog: http://tiny.cc/italo_blog Site: http://tiny.cc/italomaia

Upload: italomaia

Post on 19-Jan-2015

971 views

Category:

Technology


4 download

DESCRIPTION

Slides utilizados no PythOnCeará - 2009

TRANSCRIPT

Page 1: Django Tem Ritmo

DJANGO TEM RITMO!

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

Palestrante: Italo MC MaiaDuração: 50minBlog: http://tiny.cc/italo_blogSite: http://tiny.cc/italomaia

Page 2: Django Tem Ritmo

Frameworks Web

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

Frameworks

MyFaces - JavaRubyOnRails - Ruby

Catalyst - PerlKepler - Lua

CakePHP - PHP

Frameworks Python

TurboGearsWeb.PyWeb2PyPylons

Karrigell

Page 3: Django Tem Ritmo

Django!

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

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

- Princípios -ORMDRYKISS

MTV (MVC)Rápido

EscalávelPoucas dependências

Page 4: Django Tem Ritmo

Melhores Práticas!

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

Baixo acoplamentoUrls/Visão/Modelo

Explícito é melhor que implícito

Menos mágica!

EnxutoSó o essencial!

Produtivo- Código + Produto

Lógica de domínioauto-contida

Modelo

PoliglotaInternacionalização

Ajax e companhiaXML, (X)HTML, JSON

ExtensívelTUDO!

Page 5: Django Tem Ritmo

models.py

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

ORM padrão do Django

Solução InHouseLazy QueriesActiveRecord

1to1, 1toM, MtoNIndepende do Banco

Sinais

from django.models import *# define a classe/tabela no bancoclass Page(models.Model): name=CharField(max_length=100) slug=SlugField(primary_key=True) text=models.TextField()

# cria uma página no bancoPage.objects.create(name='Pugce', slug='pugce', text='Amo tudo isso!')pg = Page.objects.get(pk='pugce') # busca por PKquery = Page.objects.all() # todas as paginas!# paginas que o nome comeca com 'P'Page.objects.filter(name__startswith='P')

Page 6: Django Tem Ritmo

urls.py

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

DRYBaixo acoplamento

Exp. RegularesRÁPIDO!!

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

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

Mapeamento de Requisições

Page 7: Django Tem Ritmo

forms.py

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

Geração de Formulários

- Validação -Automática

Personalizada

- Gerados -A partir do modelo

Manualmente

- Características -Sem HTML

Mapeamento auto.Tratamento de erros

from django import formsfrom . import models# form a partir de um modeloclass PageForm(forms.ModelForm):

class Meta: model=models.Page# testando o formuláriopage=models.Page.objects.get(pk='pugce')frm=PageForm({“name”:”huguinho”}, instance=page)if frm.is_valid(): frm.save()else: print frm.errors

Page 8: Django Tem Ritmo

views.py

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

- Características -Simples

Valida AcessoResponde Requisições

Acessa o ModeloIndepende do Template

Ajax Transparente

Lógica da Aplicação

from django.shortcuts import \ render_to_response as rpfrom . import models

# primeiro argumento deve ser a requisicaodef page(request, slug):

# slug: identificador de uma Pagepg = models.Page.objects.get(pk=slug)rp_dict = pg.__dict__

if request.is_ajax(): # requisicao ajax?return rp('pg.json', rp_dict,

mimetype='application/json')else: return rp('pg.html', rp_dict)

Page 9: Django Tem Ritmo

Templates!

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

Tags{% tagname %}

Variáveis{{ var }}

Filtrosvar|filtro

Mostrando Resultado!

FlexívelFunciona com qualquer arquivo texto, seja XML, HTML, XHTML, TXT...

Melhores PráticasSepara Lógica e Apresentação

Page 10: Django Tem Ritmo

base.html

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

Page 11: Django Tem Ritmo

page.html

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

Page 12: Django Tem Ritmo

Página montada

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

HTML exibindo Page(pk='pugce')

Page 13: Django Tem Ritmo

contribs.*

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

HumanizeRedirects

SyndicationCommentsFlatpagesSessions

Webdesign

AdminContenttypeFormtoolsLocalflavorSitemaps

Admindocs

CsrfGis

MarkupSitesAuth

Databrowse

Page 14: Django Tem Ritmo

contrib.admin

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

fonte:djangobook.zinpep

Interface Administrativa

Acesso ao bancoCrud

AutomatizadoLogs

PermissõesPersonalizável

Page 15: Django Tem Ritmo

Agradecimento

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

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/