Penso che ci fossero alcuni fattori, la cui combinazione era maggiore della somma dei loro pesi individuali.
Uno è semplicemente il tempismo: Django è apparso proprio mentre la prima grande ondata di hype di Rails stava aumentando, e così è stato immediatamente descritto come una sorta di "risposta di Python a Rails". Ciò ha comportato un numero non irrilevante di bulbi oculari sul progetto quasi dall'inizio. Il fatto che Adrian fosse al meetup "Snakes and Rubies" a Chicago e abbia preso parte a discorsi fianco a fianco su Rails e Django ha contribuito molto a questo.
Un altro fattore è che Django è ed è sempre stato un'installazione a pacchetto singolo (beh, non proprio: hai ancora bisogno di un adattatore per database, a meno che tu non sia su Python 2.5+ e utilizzi SQLite, ma abbastanza vicino). Le alternative non Zope, che si concentravano tutte sul lasciare la scelta dei componenti nelle mani dello sviluppatore, richiedevano un po 'più di lavoro solo per arrivare al punto in cui si poteva fare un tutorial di base: avresti bisogno di andare a caccia di un ORM, un linguaggio modello, ecc., ecc. e installali e configurali tutti. Sebbene sia migliorato molto nel corso degli anni, penso che il ricordo persistente di ciò abbia ancora un effetto.
E Django è uscito dal cancello con una documentazione che (se così posso dire io stesso) era molto al di sopra del solito standard per i progetti open-source, ed è solo migliorata nel tempo. Il tutorial, nonostante tutti i suoi numerosi difetti, colpisce una serie di punti salienti che rendono Django utile, e il resto della documentazione è sempre stato di buona qualità, mescolando sia riferimenti API che importanti bit di "come fare" secondo necessità. Questo produce una buona esperienza fuori dagli schemi e aiuta con la curva di apprendimento post-tutorial (qualcosa che ha sempre afflitto Zope).
Penso anche che ci sia la percezione - a torto oa ragione - che, diciamo, Pylons o Werkzeug siano davvero migliori per sviluppatori esperti che conoscono già WSGI e l'ecosistema web Python; il fatto che tendano ad essere scelte forti per prendere le tue librerie preferite esistenti e collegarle insieme è la fonte di questo, penso, e forse spinge alcune persone più recenti verso l'approccio integrato di Django. Il rovescio della medaglia, ovviamente, è che molte persone che farebbero meglio a imparare di più in anticipo prima di provare Django non lo fanno;)
Infine, penso che ci sia qualcosa da dire sul modo in cui Django è stato commercializzato, vale a dire che non è stato commercializzato per molto tempo, o almeno non nel senso in cui, diciamo, Rails è stato commercializzato. Fino all'arrivo di Django 1.0, lo sforzo di "marketing" consisteva principalmente in persone che bloggavano (e c'erano alcuni incidenti notevoli in cui alle persone veniva chiesto di attenuarlo un po '), discorsi a PyCon e poi principalmente solo migliorare il framework, costruendo cose interessanti con esso e lasciando che i risultati parlino da soli. Ora, ovviamente, nel mondo post-1.0 abbiamo DSF e DjangoCon e consulenti orientati al business che fanno sessioni di formazione e molti libri e tutto il resto, ma è tutto ancora abbastanza nuovo.
Mi aspetto che ci sarà un contraccolpo, proprio come è stato con Rails, e in effetti penso che sia in fermento da un po 'e sia già iniziato. Ma fino ad ora penso che i fattori che ho elencato qui siano almeno quelli principali alla base della crescita costante e costante della popolarità che Django ha visto dalla sua uscita iniziale.