Creo que hubo algunos factores, cuya combinación fue mayor que la suma de sus pesos individuales.
Uno es simplemente el tiempo: Django apareció justo cuando la primera gran ola de publicidad de Rails estaba aumentando, por lo que se describió inmediatamente como una especie de "respuesta de Python a Rails". Eso resultó en un número no insignificante de ojos en el proyecto casi desde el principio. El hecho de que Adrian estuviera en la reunión de "Snakes and Rubies" en Chicago y participara en charlas lado a lado sobre Rails y Django hizo mucho por eso.
Otro factor es que Django es y siempre ha sido una instalación de un solo paquete (bueno, no del todo: todavía necesita un adaptador de base de datos, a menos que esté en Python 2.5+ y use SQLite, pero lo suficientemente cerca). Las alternativas que no eran de Zope, que se centraban en dejar las opciones de los componentes en manos del desarrollador, requerían un poco más de trabajo solo para llegar al punto en el que podrías hacer un tutorial básico: tendrías que ir a buscar un ORM, un idioma de la plantilla, etc., etc. y consígalos todos instalados y configurados. Aunque eso ha mejorado mucho con los años, creo que el recuerdo persistente de eso todavía tiene un efecto.
Y Django salió de la puerta con documentación que (si se me permite decirlo) estaba muy por encima del estándar habitual para proyectos de código abierto, y solo ha mejorado con el tiempo. El tutorial, a pesar de sus muchas fallas, toca varios de los puntos altos que hacen que Django sea útil, y el resto de la documentación siempre ha sido de buena calidad, mezclando referencias de API e importantes bits de "cómo hacer" según sea necesario. Esto produce una buena experiencia lista para usar y ayuda con la curva de aprendizaje posterior al tutorial (algo que siempre ha afectado a Zope).
También creo que hay una percepción, correcta o incorrectamente, de que, digamos, Pylons o Werkzeug son realmente mejores para los desarrolladores experimentados que ya conocen WSGI y el ecosistema web de Python; el hecho de que tienden a ser opciones sólidas para tomar sus bibliotecas favoritas existentes y conectarlas es la fuente de esto, creo, y tal vez empuje a algunas personas más nuevas hacia el enfoque integrado de Django. La otra cara, por supuesto, es que mucha gente que estaría mejor aprendiendo más por adelantado antes de probar Django no hace eso;)
Finalmente, creo que hay algo que decir sobre la forma en que se comercializa Django, es decir, que realmente no se comercializó durante mucho tiempo, o al menos no en el sentido en que, por ejemplo, se comercializó Rails. Hasta que aterrizó Django 1.0, el esfuerzo de "marketing" consistió principalmente en blogs de personas (y hubo algunos incidentes notables en los que se pidió a las personas que bajaran un poco el tono), charlas en PyCon y luego, principalmente, mejorar el marco, construir cosas interesantes con él. y dejar que los resultados hablen por sí mismos. Ahora, por supuesto, en el mundo posterior a 1.0 tenemos DSF y DjangoCon y consultores orientados a los negocios que realizan sesiones de capacitación y muchos libros y todo lo demás, pero todo eso sigue siendo bastante nuevo.
Espero que haya una reacción violenta, tal como ha ocurrido con Rails, y de hecho creo que se ha estado gestando durante un tiempo y ya ha comenzado. Pero hasta ahora creo que los factores que he enumerado aquí son al menos los principales detrás del crecimiento constante y constante de la popularidad que ha visto Django desde su lanzamiento inicial.