Download - 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
Frameworks Web
http://www.pugce.orghttp://www.python.org.br
Frameworks
MyFaces - JavaRubyOnRails - Ruby
Catalyst - PerlKepler - Lua
CakePHP - PHP
Frameworks Python
TurboGearsWeb.PyWeb2PyPylons
Karrigell
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
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!
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')
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
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
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)
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
base.html
http://www.pugce.orghttp://www.python.org.br
page.html
http://www.pugce.orghttp://www.python.org.br
Página montada
http://www.pugce.orghttp://www.python.org.br
HTML exibindo Page(pk='pugce')
contribs.*
http://www.pugce.orghttp://www.python.org.br
HumanizeRedirects
SyndicationCommentsFlatpagesSessions
Webdesign
AdminContenttypeFormtoolsLocalflavorSitemaps
Admindocs
CsrfGis
MarkupSitesAuth
Databrowse
contrib.admin
http://www.pugce.orghttp://www.python.org.br
fonte:djangobook.zinpep
Interface Administrativa
Acesso ao bancoCrud
AutomatizadoLogs
PermissõesPersonalizável
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/