Você está na página 1de 15

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

Você também pode gostar