Django Tem Ritmo
Upcoming SlideShare
Loading in...5
×
 

Django Tem Ritmo

on

  • 1,314 views

Slides utilizados no PythOnCeará - 2009

Slides utilizados no PythOnCeará - 2009

Statistics

Views

Total Views
1,314
Views on SlideShare
1,314
Embed Views
0

Actions

Likes
0
Downloads
17
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Django Tem Ritmo Django Tem Ritmo Presentation Transcript

  • 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