[Python] impressioni su Django

Manlio Perillo manlio_perillo a libero.it
Lun 13 Nov 2006 22:03:07 CET


Sandro Dentella ha scritto:
>>>> 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.
> 

Di certo non confonde, e di certo questa feature aiuta a definire tutto
in un solo posto.

Tuttavia credo che sia stata una forzature cercare di definire tutto in
un solo posto.

>>>> 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.
> 

Non l'ho ancora usato, quindi magari mi sbaglio.
La mia era solo una impressione avuta leggendo la documentazione.

>>>> 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.
> 

Si, hai ragione.
Un join implicito.
Il problema è che Django cerca di usare il database nei minimi termini,
usandolo come lo userebbe un programmatore e non un esperto di database
relazionali.

Per fortuna ti permette di definire le primary key come vuoi tu (ma non
di default, in cui vengono usate primary key surrogate).

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

sqlalchemy affronta un problema complesso.
Io per ora scrivo tutte le query a mano, usando delle interfacce per
l'accesso al database.

Il vantaggio è che aggiungo un livello di astrazione dal database (il
database ed il codice Python vivono su due piani diversi).

Però sono costretto a definire delle interfacce limitate (non posso
prevedere tutto e diventerebbe troppo complesso da mantenere).

Significa anche riscrivere molto codice (mentre Django ha delle view
generiche per la modifica/inserimento di oggetti)

> [...]
>>>> 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...
> 

Speriamo!
Magari è una cosa che hanno aggiunto recentemente.


> [...]



Saluti  Manlio Perillo


Maggiori informazioni sulla lista Python