Django - criando aplicações plugáveis

download Django - criando aplicações plugáveis

If you can't read please download the document

description

Apresentação de slides da palestra de Marinho Brandão na PyCon Brasil 2008

Transcript of Django - criando aplicações plugáveis

Criando aplicaes plugveisMarinho Brando - PyCon Brasil 2008, Rio de Janeiro

O que so aplicaes plugveis?

Exemplos de aplicaes djapian django-diario django-tagging django-command-extensions django-antivirus django-registration

Funcionalidades extensveis Settings da aplicao minha_app/app_settings.py APP_SETTING = getattr(settings, 'APP_SETTING', None)

Signals da aplicaominha_app/app_signals.py meu_signal = django.dispatch.Signal()

Views extensveis

Exemplo de view extensvelclass 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', )

Templates da aplicao uma boa idia ter templates da aplicao? settings.py: TEMPLATE_LOADERSo

django.template.loaders.app_directories.load_template_source

minha_app/templates/admin/minha_app minha_app/templates/minha_app

Classes de modelo Contrib "contenttypes"o

ContentType.objects.get_for_model

Generic Relations GenericInlineModelAdmin/ GenericInlineFormSet

Exemplo de generic foreign keyfrom 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 )

Boas prticas Nomenclatura: ingls para distribuir, portugus para realidade nacional import models / from minha_app import ... Pacote "apps" um erro Usar url() e reverse() Verses do Python e Django / GAE

Boas prticas doc strings Usar aplicao sites Internacionalizao Testes Todas as combinaes possveis

Distribuindo aplicaes Repositrio (Subversion, Git, Bazaar, Mercurial, etc) distutils PythonEggs Licena (GPL, LGPL, BSD ou WTFPL?)

Manter em mente ao criar aplicao Fazer uma coisa e fazer bem No ter medo de mltiplas aplicaes Escrever flexvel Construir para distribuir James Bennett, DjangoCon 2008 Django ainda um framework para pragmticos

Bom senso em tudo

Referncias Django - Writing Reusable Applications (James Bennet)o o

http://media.b-list.org/presentations/2008/djangocon/reusable_apps.pdf http://vivixvideo.com/videos/djangocon-2008-reusable-apps/

Reusable Django appso

http://www.b-list.org/weblog/2007/mar/27/reusable-django-apps/

Tutorial 1 - Phylosophyo

http://docs.djangoproject.com/en/dev/intro/tutorial01/#activating-models

DjangoPlugables.como

http://djangoplugables.com/

ConclusoVamos embora? [email protected] http://marinhobrandao.com