[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