Download - Construindo Sistemas Com Django
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