Django 1.0

Powered by Django.

Il grande momento è finalmente arrivato: la versione 1.0 di Django, popolare framework per lo sviluppo di applicazioni web, è stata rilasciata.

Scritto in Python dai geniali Adrian Holovaty, Simon Willison, Jacob Kaplan-Moss e Wilson Miner, è stato inizialmente creato dagli sviluppatori dell’americana World Online nel 2003, dipartimento web di un giornale di Lawrence, una piccola città del Kansas.

Nel 2005 è stato rilasciato al pubblico sotto licenza BSD, riscuotendo un inaspettato consenso da parte di molti entusiasti sviluppatori web e non solo.

Il rilascio di questa ultima versione è destinato a far riscuotere a Django un ulteriore successo, dimostrando ai più timorosi di avere a che fare con un prodotto solido, stabile e maturo, adatto quindi ad essere utilizzato in ambienti di produzione.

Il contributo della comunità Django è stato fondamentale per raggiungere questo obiettivo: a distanza di un anno dall’ultimo rilascio ufficiale molti sviluppatori hanno contribuito utilizzando costantemente la versione in sviluppo, segnalando bug, inviando patch e partecipando allo sviluppo di numerose funzionalità.

La documentazione è stata notevolmente perfezionata, offrendo agli inesperti una guida completa al framework e fornendo tutte le informazioni necessarie agli sviluppatori che desiderano migrare i propri progetti all’ultima versione disponibile.

Non ci resta che consigliarvi caldamente il download e augurarvi buon divertimento!

Comments

  1. C’e’ da aggiungere che anche il sito di Stacktrace e’ “Django Powered”!

  2. Senza che parta un flame di quelli colossali… faccio una domanda da ignorante… giusto per capire di che si tratta.

    Ho dato un’occhiata a questo articolo: http://docs.djangoproject.com/en/dev/intro/overview/#intro-overview

    In pratica Django sta a Python come Rails sta a Ruby? Sono la stessa cosa?

  3. Andrea, l’analogia è corretta se consideriamo che Django è il framework di punta nel mondo Python per Rich Internet Applications, come Rails è il web framework più comune per Ruby. Sono entrambi MVC framework, anche se in maniera leggermente diversa, e Django chiama il paradigma MTV (Model-Template-View).

    Da un punto di vista strettamente tecnico però i due framework sono abbastanza diversi, e nascono in ambienti diversi. Django nasce nel mondo dell’editoria, anche se non è limitato a questo, mentre Rails nasce dall’esigenza di 37Signals di avere un framework per vendere Software as a Service.

    In altre parole Django non è un clone di Rails e i due offrono una diverso tipo di esperienza di sviluppo. Un clone di Rails per Python, non troppo riuscito secondo me, è Pylons.

  4. Dunque, sono due framework nati da esigenze diverse, ok.

    Hanno qualche particolare limitazione che fa si che sia preferibile l’uno rispetto all’altro? Ad esempio… dovessi realizzare un sito web di e-commerce, oppure un sito di annunci o un mercatino di libri usati, ci sono particolari funzionalità che uno dei due ha (e l’altro no) che potrebbero velocizzare il lavoro di scrittura del codice?

    Vi ringrazio nuovamente :)

  5. Per gli esempi che hai indicato, vanno bene entrambi. Sono tutti e due molto flessibili. Credo che la scelta dipenda moltissimo dal linguaggio che conosci già. Se conosci Python, imparare Django non è difficile. Lo stesso per Ruby e Rails. Se parti da zero, personalmente credo che imparare le basi di Ruby e Rails sia più immediato che imparare Python e Django, ma è solo un’opinione personale.

    Django ha un’interfaccia di amministrazione che può farti risparmiare parecchio tempo quando stai lavorando su un sito che ne richiede una. Per questo motivo è una scelta molto popolare per siti a carattere editoriale. Non bisogna farsi trarre in inganno però, e pensare che sia limitato a questi.

    Rails d’altra parte, ha una migliore integrazione con AJAX, un ottimo supporto per controllare l’evoluzione dello schema tramite migrazioni, ed è in generale, per la sua filosofia di favorire Convention over Configuration, più implicito. Questo può essere visto come un bene o un male, a seconda dei punti di vista, ma fornisce un Domain-Specific Language molto produttivo, con codice piuttosto conciso.

    Ad esempio, questo è il codice di due modelli in una relazione 1 a molti in Django:

    from django.db import models
    
    class Reporter(models.Model):
        first_name = models.CharField(max_length=30)
        last_name = models.CharField(max_length=30)
        email = models.EmailField()
    
    class Article(models.Model):
        headline = models.CharField(max_length=100)
        pub_date = models.DateField()
        reporter = models.ForeignKey(Reporter)
    

    Con Rails (ActiveRecord in realtà), i due diventano:

    class Reporter < ActiveRecord::Base
      has_many :articles
    end
    
    class Article < ActiveRecord::Base
      belongs_to :reporter
    end
    

    Nel caso di Rails, le tabelle possono essere definite manualmente, esistere già nel database oppure, come capita di solito, vengono definite tramite migration, ma non vengono mai definite direttamente nel modello.

  6. Di django ho sentito molto parlare bene, soprattutto per il pannello d’amministrazione e per l’orm..

    Vorrei approfondire, però la mia conoscenza di python è piuttosto limitata, e non saprei neanche da dove iniziare.. Qualcuno mi consiglia qualche punto di partenza? Delle basi le ho, quindi non serve sia proprio terra terra.. Qualche cosa di concreto insomma.. Grazie..:)

  7. @Antonio
    Correggerei questa tua affermazione:
    “”"l’analogia è corretta se consideriamo che Django è il framework di punta nel mondo Python per Rich Internet Applications, come Rails è il web framework più comune per Ruby”"”
    E’ vero che Django ha molti utenti, ma e’ anche
    vero che ci sono moltissimi altri framework in
    Python con una loro dignita’ e molti utenti, Zope
    in primis: la situazione non e’ la stessa che nel
    mondo Ruby, in cui Rails ha un vero predominio
    sugli altri framework.

    @lloyd27
    Se vuoi imparare Python, comincia da
    python.it

  8. @micheles: Anche nel mondo Ruby ci sono altri framework piuttosto utilizzati come Merb, Nitro e Ramaze, ma Rails ha il predominio quasi assoluto, mentre è vero che nel mondo Python le cose vanno diversamente. Storicamente Zope è stato IL web framework per Python, ma secondo me appartiene ad un’altra era, e il framework più adottato per nuove applicazioni web è senz’altro Django, che è ha ricevuto anche la “benedizione” di Guido. Ci sono anche TurboGears, Pylons, CherryPy, eccetera, ma dovendo trovare un “equivalente”, non dal punto di vista delle somiglianze tecniche, direi che Django è il Rails del mondo Python.

  9. Parlando da chi ci ha giocato un poco con entrambi ma si guadagna la pagnotta ancora col vecchio Struts (e il nuovo Struts 2.x):

    Rails e’ fantastico per cose rapide, fai un bloggettino personalizzato in un pomeriggio, senza aver mai programmato in Ruby. Se pero’ vuoi un sito complesso devi studiarlo bene e in alcuni casi ha delle limitazioni non banali da superare.

    Django e’ piu’ pensato per siti complessi, con differenti utenti con profili diversi e offre subito alcune ottimizzazioni che sono piu’ difficili da fare con Rails. In cambio non e’ cosi’ rapido, anche un bloggettino ci metti una 10 di ore a farlo se non hai mai programmato in python prima.

    A me piace di piu’ l’approccio di django ma e’ molto questione di filosofia personale.
    Di sicuro entrambi “forzano” una certa visione del framework, a differenza di Hibernate per dire che lo puoi configurare con strategie diversissime. ;)

  10. grullonet says:

    Ciao Antonio,
    hai detto che Django utilizza un paradigma leggermente diverso dall’MVC (Model View Controller) ossia l’MTV (Model-Template-View).
    Cosa significa?…
    Template == View (!?!)
    e la parte del controller chi la fa?

    Grazie

  11. Ciao grullonet, in realtà Django usa il paradigma MVC, è solo che nella comunità Django viene chiamato MTV. Quello che Rails chiama Controller, Django chiama View, quello che Rails chiama View, Django chiama Template. Puoi leggere una risposta un po’ più dettagliata nelle FAQ del progetto: http://www.djangoproject.com/documentation/faq/ ma, in sostanza, si tratta principalmente di una questione di preferenza nella nomenclatura.

  12. @grullonet: in realtà in Django la differenziazione tra View e Template è più sottile. Le view si occupano di decidere “quali” dati far vedere mentre i template si occupano di “come” farli vedere. Il model è il model mentre il controller è in pratica Django stesso.

  13. grullonet says:

    Grazie intanto per le risposte.
    Da non molto sto studiando il framework TurboGears e volevo avere un confronto con Django (sperando di non andare troppo OT).

    Grazie

Policy per i commenti: Apprezzo moltissimo i vostri commenti, critiche incluse. Per evitare spam e troll, e far rimanere il discorso civile, i commenti sono moderati e prontamente approvati poco dopo il loro invio.