• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Django - Criando Aplicacoes Plugaveis
 

Django - Criando Aplicacoes Plugaveis

on

  • 3,816 views

Slides da palestra sobre Django na PyCon Brasil 2008

Slides da palestra sobre Django na PyCon Brasil 2008

Statistics

Views

Total Views
3,816
Views on SlideShare
3,783
Embed Views
33

Actions

Likes
4
Downloads
131
Comments
1

4 Embeds 33

http://www.marinhobrandao.com 17
http://www.slideshare.net 14
http://marinhobrandao.com 1
http://www.slideee.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

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

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Primeira vez numa PyCon Sem hábito de falar em público Não é fácil falar para uma platéia dessa Todo mundo cansado Não aguento mais dormir no colchonete (é isso ou dormir na cama de casal com o Semente)

Django - Criando Aplicacoes Plugaveis Django - Criando Aplicacoes Plugaveis Presentation Transcript

      • Marinho Brandão - PyCon Brasil 2008, Rio de Janeiro
    Criando aplicações plugáveis
      • Andrews Medina sabe divertir a galera
  • O que são aplicações plugáveis?
      • Cada formiguinha com sua tarefa
  • Exemplos de aplicações
      • djapian
    •  
      • django-diario
    •  
      • django-tagging
    •  
      • django-command-extensions
    •  
      • django-antivirus
    •  
      • django-registration
  • Funcionalidades extensíveis
      • Settings da aplicação
        • minha_app/app_settings.py
        • APP_SETTING = getattr(settings, 'APP_SETTING', None)
    •  
      • Signals da aplicação
        • minha_app/app_signals.py
        • meu_signal = django.dispatch.Signal()
    •  
      • Views extensíveis
  • Exemplo de view extensível
    • class FormCidade(forms.ModelForm):
    • class Meta:
    • model = Cidade
    • def index(request, template_path='aplicacao/index.html', form_class=FormCidade):
    • form = form_class(request.GET)
    • return render_to_response(template_path, locals())
    • url(
    • r'^$',
    • 'aplicacao.views.index',
    • {'template_path': 'outro_index.html'},
    • 'ap_index',
    • )
      • Aplicação plugável não é adapter
  • Templates da aplicação
      • É uma boa idéia ter templates da aplicação?
    •  
      • settings.py: TEMPLATE_LOADERS
        • django.template.loaders.app_directories.load_template_source
    •  
      • minha_app/templates/admin/minha_app
    •  
      • minha_app/templates/minha_app
  • Classes de modelo
      • Contrib "contenttypes"
        • ContentType.objects.get_for_model
    •  
      • Generic Relations
    •  
      • GenericInlineModelAdmin/ GenericInlineFormSet
  • Exemplo de generic foreign key
    • from django.contrib.contenttypes.models import ContentType
    • from django.contrib.contenttypes import generic
    • class ForumThread(models.Model):
    • title = models.CharField(max_length=50)
    • parent_ct = models.ForeignKey(ContentType)
    • parent_id = models.PositiveIntegerField()
    • parent = generic.GenericForeignKey('parent_ct', 'parent_id')
    • def exemplo(request):
    • produto = Produto.objects.get(id=1)
    • nova_thread = ForumThread.objects.create(
    • title='Thread sobre um produto',
    • parent_ct=ContentType.objects.get_for_model(Produto),
    • parent_id=produto.id
    • )
      • “ Generic Relations”...
  • Boas práticas
      • Nomenclatura: inglês para distribuir, português para realidade nacional
    •  
      • import models / from minha_app import ...
    •  
      • Pacote "apps" é um erro
    •  
      • Usar url() e reverse()
      • Versões do Python e Django / GAE
  • Boas práticas
      • doc strings
      • Usar aplicação “sites”
      • Internacionalização
      • Testes
      • Todas as combinações possíveis
      • Coca-cola combina com tudo, e é um sucesso!
  • Distribuindo aplicações
      • Repositório (Subversion, Git, Bazaar, Mercurial, etc)
      • distutils
      • PythonEggs
      • Licença (GPL, LGPL, BSD ou WTFPL?)
  • Manter em mente ao criar aplicação
      • Fazer uma coisa e fazer bem
    •  
      • Não ter medo de múltiplas aplicações
    •  
      • Escrever flexível
    •  
      • Construir para distribuir
    •  
    • James Bennett, DjangoCon 2008
    • Bom senso em tudo
      • Django ainda é um framework para pragmáticos
  • Referências
      • Django - Writing Reusable Applications (James Bennet)
        • http://media.b-list.org/presentations/2008/djangocon/reusable_apps.pdf 
        • http://vivixvideo.com/videos/djangocon-2008-reusable-apps/ 
    •  
      • Reusable Django apps
        • http://www.b-list.org/weblog/2007/mar/27/reusable-django-apps/
    •  
      • Tutorial 1 - Phylosophy
        • http://docs.djangoproject.com/en/dev/intro/tutorial01/#activating-models 
    •  
      • DjangoPlugables.com
        • http://djangoplugables.com/
  • Conclusão
      • Vamos embora?
      •  
      • [email_address]
      • http://marinhobrandao.com