Django - Criando Aplicacoes Plugaveis

  • 2,478 views
Uploaded on

Slides da palestra sobre Django na PyCon Brasil 2008

Slides da palestra sobre Django na PyCon Brasil 2008

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
2,478
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
134
Comments
1
Likes
4

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • 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)

Transcript

  • 1.
      • Marinho Brandão - PyCon Brasil 2008, Rio de Janeiro
    Criando aplicações plugáveis
  • 2.
      • Andrews Medina sabe divertir a galera
  • 3. O que são aplicações plugáveis?
      • Cada formiguinha com sua tarefa
  • 4. Exemplos de aplicações
      • djapian
    •  
      • django-diario
    •  
      • django-tagging
    •  
      • django-command-extensions
    •  
      • django-antivirus
    •  
      • django-registration
  • 5. 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
  • 6. 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',
    • )
  • 7.
      • Aplicação plugável não é adapter
  • 8. 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
  • 9. Classes de modelo
      • Contrib "contenttypes"
        • ContentType.objects.get_for_model
    •  
      • Generic Relations
    •  
      • GenericInlineModelAdmin/ GenericInlineFormSet
  • 10. 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
    • )
  • 11.
      • “ Generic Relations”...
  • 12. 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
  • 13. Boas práticas
      • doc strings
      • Usar aplicação “sites”
      • Internacionalização
      • Testes
      • Todas as combinações possíveis
  • 14.
      • Coca-cola combina com tudo, e é um sucesso!
  • 15. Distribuindo aplicações
      • Repositório (Subversion, Git, Bazaar, Mercurial, etc)
      • distutils
      • PythonEggs
      • Licença (GPL, LGPL, BSD ou WTFPL?)
  • 16. 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
  • 17. 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/
  • 18. Conclusão
      • Vamos embora?
      •  
      • [email_address]
      • http://marinhobrandao.com