Django Tem Ritmo

Download Django Tem Ritmo

Post on 19-Jan-2015

946 views

Category:

Technology

4 download

Embed Size (px)

DESCRIPTION

Slides utilizados no PythOnCear - 2009

TRANSCRIPT

<ul><li> 1. DJANGO TEM RITMO! Palestrante: Italo MC Maia Durao: 50min Blog: http://tiny.cc/italo_blog Site: http://tiny.cc/italomaia http://www.python.org.brhttp://www.pugce.org </li></ul> <p> 2. Frameworks Web FrameworksFrameworks Python MyFaces - JavaTurboGears RubyOnRails - RubyWeb.PyCatalyst - PerlWeb2PyKepler - Lua PylonsCakePHP - PHP Karrigellhttp://www.python.org.br http://www.pugce.org 3. Django!Desenvolvido para Lawrence Journal-World http://www.lawrence.com/ - Princpios -ORM DRYKISS MTV (MVC) RpidoEscalvel Poucas dependncias http://www.python.org.br http://www.pugce.org 4. Melhores Prticas!Baixo acoplamento Lgica de domnio Urls/Viso/Modelo auto-contidaExplcito melhor queModeloimplcito PoliglotaMenos mgica!InternacionalizaoEnxuto Ajax e companhia S o essencial!XML, (X)HTML, JSONProdutivoExtensvel- Cdigo + ProdutoTUDO! http://www.python.org.brhttp://www.pugce.org 5. models.py ORM padro do Djangofrom django.models import * Soluo InHouse # define a classe/tabela no banco class Page(models.Model):Lazy Queriesname=CharField(max_length=100)slug=SlugField(primary_key=True) ActiveRecord text=models.TextField()1to1, 1toM, MtoN # cria uma pgina 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 Sinaisquery = Page.objects.all() # todas as paginas! # paginas que o nome comeca com 'P' Page.objects.filter(name__startswith='P')http://www.python.org.brhttp://www.pugce.org 6. urls.pyMapeamento de Requisies from django.conf.urls.defaults import *from django.contrib import adminfrom cms import views# acha modelos p/ o django-admin DRYadmin.autodiscover() Baixo acoplamento # (, view.metodo ou include(modulo_url))urlpatterns = patterns('', Exp. Regulares(r'^admin/', include(admin.site.urls)), (r'^accounts/(?P[w_]+)/',RPIDO!!include('pugce.accounts.urls')), url(r'^(?P[0-9A-Za-z-_.//]+)/$',views.page, name='cms-page'))http://www.python.org.br http://www.pugce.org 7. forms.py Gerao de Formulrios- Gerados -- Validao -A partir do modeloAutomticaManualmentePersonalizada from django import forms from . import models - Caractersticas - # form a partir de um modelo Sem HTMLclass PageForm(forms.ModelForm):class Meta: model=models.PageMapeamento auto. # testando o formulrio 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.brhttp://www.pugce.org 8. views.py Lgica da Aplicao from django.shortcuts import - Caractersticas - render_to_response as rpfrom . import modelsSimples Valida Acesso# primeiro argumento deve ser a requisicaodef page(request, slug):Responde Requisies# slug: identificador de uma Pagepg = models.Page.objects.get(pk=slug)Acessa o Modelo rp_dict = pg.__dict__ Independe do Templateif 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. Templates!Mostrando Resultado! TagsFlexvel {% tagname %}Funciona com qualquer Variveisarquivo texto, seja XML,HTML, XHTML, TXT...{{ var }}FiltrosMelhores Prticas var|filtroSepara Lgica e Apresentao http://www.python.org.brhttp://www.pugce.org 10. base.html http://www.python.org.br http://www.pugce.org 11. page.html http://www.python.org.br http://www.pugce.org 12. Pgina montadaHTML exibindo Page(pk='pugce') http://www.python.org.br http://www.pugce.org 13. contribs.*Admin Csrf HumanizeContenttype Gis Redirects FormtoolsMarkup SyndicationLocalflavorSitesComments SitemapsAuth Flatpages AdmindocsDatabrowse Sessions Webdesignhttp://www.python.org.brhttp://www.pugce.org 14. contrib.admin Interface AdministrativaAcesso ao bancoCrudAutomatizadoLogs PermissesPersonalizvel fonte:djangobook.zinpep http://www.python.org.brhttp://www.pugce.org 15. AgradecimentoAgradeo a presena de todos e aos meuscolegas coordenadores por serem grandes pessoas e profissionais! Mais informaes em: http://djangoproject.com/ http://www.djangobrasil.org/http://www.python.org.br http://www.pugce.org </p>