[Python] impressioni su Django

Sandro Dentella sandro a e-den.it
Lun 13 Nov 2006 21:35:34 CET


> >> 1) Credo ci si sforzi troppo di seguire il principio DRY
> >>    (Dont Repeat  Yourself).
> >>    Infatti nel model ci sono cose che non dovrebbero esserci.
> > 
> > ad esempio?
> > 
> 
> Nel model compare la classe Admin in cui sono presenti dei dettagli che
> riguardano la "view".
> Lo stesso nella definizione dei vari elementi (come ForeignKey), in cui
> ci sono delle cose che riguardano la view.

capisco l'obiezione ma non mi disturba. Non sono un teorico dell MVC che
peraltro anche nella "variante django" apprezzo, ma reputo che in fatto che
la classe Admin sia "lì" nello stesso file di definizione della classe non
confonda rispetto al fatto che "sopra" ci sta la definizione del modello e
nella clase Admin alcune cose specifiche della presentazione dei dati.

> >> 2) Django non è nato come framework general purpose, ma lo è diventato
> >>    grazie ad una buona politica "commerciale" (IMHO) e ad una
> >>    architettura buona in partenza.
> >>    Questo temo se lo porterà dietro per sempre.
> > 
> > in cosa noti che non sia nato "general purpouse"? 
> > 
> 
> Lo dicono loro stessi: è nato per servire il loro sito di notizie online
> (e si vede che è orientato a siti di questo tipo, con un enfasi alla
> cronologia degli ogetti, alla sezione media, etc).

porrei la domanda al contrario, cosa ti pare che manchi per farne un
"general purpouse". Il fatto che nasca in un certo ambito non è un peccato
originale, è una circostanza.

> >> 3) L'ORM è limitato
> >>    (ma sembra che stiano lavorando per integrare SQLALchemy).
> > 
> > io ho cercato e non mi pare che ci sia nulla più che la mail in cui
> > Roberto Munn dice che ci avrebbe lavorato. Anche nella lista di sqlalchemy
> > qualcuno gli ha chiesto delucidazioni sullo stato e lui non ha risposto, mi
> > pare impegnato in altre cose.
> > 
> > E` vero che anche a me sembra un ORM un po' limitato.
> > 
> 
> Si, non mi sembra ci sia supporto per le join.

Errato, c'è eccome. Non ho trovato quelle per OUTER JOIN, ma guarda come ad
esempio scrivi di trovare tutti i ticket di una persona cercandolo fra tutti
i progetti di tutte le organizzazioni di cui fa parte. __ fa automaticamente
la join fra le tabelle, l'ultimo __username indica la WHERE condition.

    tikets = Ticket.objects.filter(
        project__organization__person__username = request.user.username)

Essendo queste le parti principali delle classi

    class Ticket(models.Model):
	project = models.ForeignKey('Project')

    class Project(models.Model):
	organization = models.ForeignKey(Organization)

    class Organization(models.Model):
	person = models.ManyToManyField(User)

    class User(models.Model):
	username = models.CharField(...)

Che poi questo sia più facile da leggere si una QUERY SQL è un altro
discorso, ma sqlalchemy non rende la vita banale

> SQLAlchemy ha proprio tutto (ho cominciato a studiare anche questo ed ho
> subito notato come sia migliorata la documentazione dalla versione
> precedente).
> 
> 
> >> 4) Ho avuto l'impressione che Django cerchi di favorire troppo chi non è
> >>    esperto di programmazione/Python (e questo, di solito è male).
> > 
> > ??? Cosa ti da questa impressione? il fatto che fornisca molte funzioni
> > pronte all'uso(vedi le generic-views)? mi pare solo una cosa bella anche per
> > chi programma...
> > 
> 
> Nella documentazione ci sono spesso delle note riguardo chi si avvicina
> a Django senza avere esperienza in Python (web designer puri).

E` un limite? mi pare che non rinuncino a nulla della potenza per andargli
incontro...

> cheetah ha il supporto per estendere i template di base?

cheetah chiama quello che vuoi, basta caricarlo prima (ma non ci ho ancora
giocato, ho solo visto che funzionava nelle funzioni elementari).

Il probelma è che molte cose sono già pronte per il loro sistema (es:
commenti) 

> > docutils e del formato reST per la documentazione. Bello anche l'uso
> > di pydispatcher (che io non avevo ancora mai usato).
> > 
> 
> 
> Dove viene usato?

  http://code.djangoproject.com/wiki/Signals

sandro
*:-)


-- 
Sandro Dentella  *:-)
http://www.tksql.org                    TkSQL Home page - My GPL work


Maggiori informazioni sulla lista Python