Ho incontrato django 8 mesi fa e mi ha riconciliato con la programmazione web che francamente detestavo. Ne ho apprezzato il disegno e la chiarezza.
Qui presento una libreria -- jungle -- ed alcune applicazioni costruite attorno a django sostituendo il sistema di templating originario con 'mako', un sistema di templating recente di Michael Bayer autore fra l'altro di sqlalchemy.
Il sistema di templating di django è forse uno degli elementi più criticati e più difesi dagli sviluppatori di django. L'idea di base è che deve restare facilmente utilizzabile da una utenza (il grafico web) che ha normalmente poca dimestichezza con la programmazione motivo per cui i tradizionali elementi di programmazione sono ridotti o mancanti.
L'esperienza mia è che in molte realtà invece chi scrive le pagine è il programmatore stesso o persona che può imparare con uguale sforzo i rudimenti per potere usare dei sistemi di templating che permettono alcuni costrutti python.
A questo punto si aprono molte possibilità decisamente efficaci. I template risultano molto più leggibili senza perdere in chiarezza. Particolarmente efficace è l'uso di layout simbolici per la creazione di form e tabelle.
La relazione vuole presentare il lavoro fatto in Thunder Systems srl negli ultimi 8 mesi e disponibile con licenza GNU tramite lo studio di alcune piccole applicazioni costruite con questa libreria fra cui un sistema di ticketing ed un sistema di gestione orari dipendenti/cartellino/badge.
22. template <%! from jungle.templatetags.jungle_tags import offset_txt %> L'utente ${ticket.submitter} ha aperto il ticket # ${ticket.id} per il tuo progetto ' ${ticket.project.name} ': ID: ${ticket.id} Titolo: ${ticket.title} Descrizione: ${offset_txt(ticket.description)} Priorita': ${ticket.get_priority_display()} Il mail ti è inviato in qualità di ${title} ---------------------------------------------------------------- Puoi vedere questo ticket qui: ${"%s/ticket/ticket/%s/" % (jun.host_url(), ticket.id)}
23. sintesi del percorso con form aggiunta dati GET: /ticket/ticket/add/ urls.py view creazione form per generare html template response POST: /ticket/ticket/add/ + {'a':'b'} urls.py view creazione form per usare dati redirect response
26. basta chiacchiere! Ora vai al serverino di sviluppo e mostra qualcosa dal vivo. Per chi segue da casa: http://jungle.thundersystems.it Non dimenticare i manager del modello!
27. object_list from jungle.views.fast_search import search2 filter_cnd, order_by, form = search2( request, model, order_by=order_by, **kw) if filter_cnd: queryset = queryset.filter(**filter_cnd) if order_by: queryset = queryset.order_by(order_by) hai dimenticato i manager, vero?
28. debug: pdb ieri abbiamo visto come WSGI permetta di entrare a debuggare ciò che succede ed intervenire. Usando il server di sviluppo di django possiamo usare pdb.set_trace() in qualunque punto ed otteniamo una sessione interattiva!!!