Construindo Sistemas Com Django

Embed Size (px)

Citation preview

Django: criando aplicaes plugveis

Marinho Brando - PythonBrasil [5], 2009, Caxias do Sul

Construindo sistemas com Django

Primeira vez numa PyCon

Sem hbito de falar em pblico

No fcil falar para uma platia dessa

Todo mundo cansado

No aguento mais dormir no colchonete ( isso ou dormir na cama de casal com o Semente)

Do que vamos falar

Sistemas: corporativos ou no, ERP, CRM, administrao um pouco melhor de sites brasileiros, etc.

Django apropriado para construir sistemas...

mas algumas coisas ainda no esto to apropriadas assim (formataes, mscaras, alinhamento, etc.)

Usar ou no usar o Admin?

Facilidades disponveis no django-plus

Djapian Rafael

Django-diario Semente

Cometi erros que no quero cometer mais

Existem centenas no Google Code e DjangoPlugables

Aplicao plugvel possui caractersticas que permitem que ela seja facilmente conectada a outras

Componentizao levada ao extremo

Escolhendo entre usar Admin ou no

Admin = conjunto de RAD para funes existentes no Django

Porqu reinventar a roda?

Comportamentos do sistema aplicados a todo o sistema no devem ser feitas para cada classe ou tela, mas em um s lugar e de uma s vez

Optar por no usar o Admin tambm pode ser uma boa opo. E tambm no complicado...

Djapian Rafael

Django-diario Semente

Cometi erros que no quero cometer mais

Existem centenas no Google Code e DjangoPlugables

Aplicao plugvel possui caractersticas que permitem que ela seja facilmente conectada a outras

Componentizao levada ao extremo

Projeto base desta apresentao

Aplicaes plugveis utilizadasdjango-plus

django-pagination

Aplicao 'sistema'Empresa

MultiEmpresa

Aplicao 'caixa'TipoComposicao

LancamentoCaixa

LancamentoCaixaComposicao

http://github.com/marinho/django-pyconbrasil-2009-sistemas/

Djapian Rafael

Django-diario Semente

Cometi erros que no quero cometer mais

Existem centenas no Google Code e DjangoPlugables

Aplicao plugvel possui caractersticas que permitem que ela seja facilmente conectada a outras

Componentizao levada ao extremo

Preparando o projeto

INSTALLED_APPS += (

'django.contrib.admin','djangoplus',# django-plus'pagination',# django-pagination

)

Criando symlink dos templates do Admin e o por qu de fazer issotemplates/admin_original django/contrib/admin/templates/admin

URL vazia apontada para admin.site.urls

(r'', include(admin.site.urls)),

Djapian Rafael

Django-diario Semente

Cometi erros que no quero cometer mais

Existem centenas no Google Code e DjangoPlugables

Aplicao plugvel possui caractersticas que permitem que ela seja facilmente conectada a outras

Componentizao levada ao extremo

Customizando templates do Admin

Templates mais usadosbase.htmlbase_site.html

change_form.htmlchange_list.html

filter.htmlindex.html

edit_inline/tabular.html

Blocks mais comunsextraheadcontent

breadcrumbschange_list search

change_form object-tools change_form form_top

change_form after_field_sets

change_form after_related_objects

Djapian Rafael

Django-diario Semente

Cometi erros que no quero cometer mais

Existem centenas no Google Code e DjangoPlugables

Aplicao plugvel possui caractersticas que permitem que ela seja facilmente conectada a outras

Componentizao levada ao extremo

Customizando templates do Admin (2)

Template 'base_limpo.html'

Classe CSS 'module'

Fieldset + H2

Acrescentando scripts de JavaScript (jQuery)

Acrescentando folha de estilos

Customizando o breadcrumbs

Customizando o object-tools

Djapian Rafael

Django-diario Semente

Cometi erros que no quero cometer mais

Existem centenas no Google Code e DjangoPlugables

Aplicao plugvel possui caractersticas que permitem que ela seja facilmente conectada a outras

Componentizao levada ao extremo

Customizando templates do Admin (2)

Template 'base_limpo.html'

Classe CSS 'module'

Fieldset + H2

Acrescentando scripts de JavaScript (jQuery)

Acrescentando folha de estilos

Customizando o breadcrumbs

Customizando o object-tools

Djapian Rafael

Django-diario Semente

Cometi erros que no quero cometer mais

Existem centenas no Google Code e DjangoPlugables

Aplicao plugvel possui caractersticas que permitem que ela seja facilmente conectada a outras

Componentizao levada ao extremo

Customizando a listagem

Alterando o template 'filter.html' para apresentar filtros como combo boxes (ao invs de listas)

Apresentando um sumrio independente dos resultados

Criando um filtro especial abaixo do form de buscaquebrando o request.GET para tornar isso possvel

Mtodo queryset

Djapian Rafael

Django-diario Semente

Cometi erros que no quero cometer mais

Existem centenas no Google Code e DjangoPlugables

Aplicao plugvel possui caractersticas que permitem que ela seja facilmente conectada a outras

Componentizao levada ao extremo

Extendendo classes bsicas do Admin

Crie sua prpria ModelAdmin, extendendo a original

Faa o mesmo comTabularInline

StackedInline

AdminSite

Usar sempre as classes extendidas para generalizar as customizaes

Djapian Rafael

Django-diario Semente

Cometi erros que no quero cometer mais

Existem centenas no Google Code e DjangoPlugables

Aplicao plugvel possui caractersticas que permitem que ela seja facilmente conectada a outras

Componentizao levada ao extremo

Formataes na listagem

Formatao de data e data/hora usando django.utils.translantion no urls.py do projeto

Formatao de valores decimais encapsulando campos desse tipo (fazendo isso de forma genrica)

Djapian Rafael

Django-diario Semente

Cometi erros que no quero cometer mais

Existem centenas no Google Code e DjangoPlugables

Aplicao plugvel possui caractersticas que permitem que ela seja facilmente conectada a outras

Componentizao levada ao extremo

Formataes na edio

Campos com mscaras, usando jquery.maskeditinput.jsmedia/js/mascara.js

Usando o get_form e o get_formset para alterar campos de forma genrica do ModelAdmin e TabularInline

Campos de dataApenas modificar o input_formats no o suficiente, preciso criar seu prprio widget

Campos de valor decimalSubstituindo o campo por outro, que por sua vez usa um widget customizado

Djapian Rafael

Django-diario Semente

Cometi erros que no quero cometer mais

Existem centenas no Google Code e DjangoPlugables

Aplicao plugvel possui caractersticas que permitem que ela seja facilmente conectada a outras

Componentizao levada ao extremo

Formataes na edio (2)

Mostrando listagem sem inline

Forando maisculas nos campos de texto

Classe 'forca_caixa_alta'

media/js/widgets.js

Desabilitando tecla ENTERmedia/js/base.js

Campos de nmeros inteiros

utils.widgets.IntegerInput

Djapian Rafael

Django-diario Semente

Cometi erros que no quero cometer mais

Existem centenas no Google Code e DjangoPlugables

Aplicao plugvel possui caractersticas que permitem que ela seja facilmente conectada a outras

Componentizao levada ao extremo

Formataes na edio (3)

Informando valor inicial de um campo usando parmetro na URL

Campos de chave estrangeira com AjaxFKWidget

djangoplus.widgets.AjaxFKWidget

djangoplus.widgets.AjaxFKDriver

URLs usadas

Depende do django-pagination

Campos somente-leitura

utils.read_only.ReadOnlyTextWidget

Djapian Rafael

Django-diario Semente

Cometi erros que no quero cometer mais

Existem centenas no Google Code e DjangoPlugables

Aplicao plugvel possui caractersticas que permitem que ela seja facilmente conectada a outras

Componentizao levada ao extremo

Criando uma URL customizada

Usando mtodo get_urls

Varivel 'title'

Aplicando permisso com decorator permission_required

Djapian Rafael

Django-diario Semente

Cometi erros que no quero cometer mais

Existem centenas no Google Code e DjangoPlugables

Aplicao plugvel possui caractersticas que permitem que ela seja facilmente conectada a outras

Componentizao levada ao extremo

O que esperar para o futuro?

Grande parte das customizaes apresentar um dia sero suportadas oficialmente, medida que o Django evoluir

Usar customizaes com conscincia para no criar problemas

Decidir com sabedoria entre criar customizaes generalizadas ou especficas

Djapian Rafael

Django-diario Semente

Cometi erros que no quero cometer mais

Existem centenas no Google Code e DjangoPlugables

Aplicao plugvel possui caractersticas que permitem que ela seja facilmente conectada a outras

Componentizao levada ao extremo

Concluso

[email protected]://www.marinhobrandao.comhttp://www.aprendendodjango.com