Your SlideShare is downloading. ×
Django - Criando Aplicacoes Plugaveis
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Django - Criando Aplicacoes Plugaveis

2,515
views

Published on

Slides da palestra sobre Django na PyCon Brasil 2008

Slides da palestra sobre Django na PyCon Brasil 2008

Published in: Technology, Business

1 Comment
4 Likes
Statistics
Notes
No Downloads
Views
Total Views
2,515
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
136
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