Myślę, że było kilka czynników, których kombinacja była większa niż suma ich indywidualnych wag.
Jednym z nich jest po prostu wyczucie czasu: Django pojawił się w momencie, gdy narastała pierwsza wielka fala szumu o Railsach, więc od razu został przedstawiony jako coś w rodzaju „odpowiedzi Pythona na Railsy”. Spowodowało to niemałą liczbę oczu na temat projektu niemal od samego początku. Fakt, że Adrian był na spotkaniu „Snakes and Rubies” w Chicago i wziął udział w równoległych rozmowach o Railsach i Django, bardzo się do tego przyczynił.
Innym czynnikiem jest to, że Django jest i zawsze było instalacją pojedynczego pakietu (no cóż, niezupełnie: nadal potrzebujesz adaptera bazy danych, chyba że korzystasz z Pythona 2.5+ i używasz SQLite, ale wystarczająco blisko). Alternatywy inne niż Zope, z których wszystkie skupiały się na pozostawieniu wyboru komponentów w rękach programisty, wymagały nieco więcej pracy, aby dojść do punktu, w którym można było zrobić podstawowy samouczek: musiałbyś poszukać ORM, język szablonów itp., a następnie zainstaluj je i skonfiguruj. Chociaż z biegiem lat to się znacznie poprawiło, myślę, że utrzymująca się pamięć o tym wciąż ma wpływ.
A Django wyszedł z bramki z dokumentacją, która (jeśli mogę tak powiedzieć) znacznie wykraczała poza zwykły standard projektów open-source iz czasem stawała się coraz lepsza. Samouczek, pomimo wszystkich swoich wielu błędów, zwraca uwagę na szereg najważniejszych punktów, które czynią Django użytecznym, a pozostała część dokumentacji zawsze była dobrej jakości, mieszając zarówno opisy API, jak i ważne bity „jak” w razie potrzeby. Daje to dobre doświadczenie po wyjęciu z pudełka i pomaga w krzywej uczenia się po samouczku (coś, co zawsze nękało Zope).
Myślę też, że istnieje przekonanie - słuszne lub niesłuszne - że, powiedzmy, Pylony lub Werkzeug są naprawdę lepsze dla doświadczonych programistów, którzy już znają WSGI i ekosystem sieciowy Pythona; fakt, że wydają się one być dobrym wyborem, jeśli chodzi o wzięcie istniejących ulubionych bibliotek i połączenie ich razem, jest tego źródłem, jak sądzę, i może skłania niektórych nowszych ludzi do zintegrowanego podejścia Django. Z drugiej strony oczywiście jest to, że wiele osób, którym lepiej byłoby dowiedzieć się więcej z góry przed wypróbowaniem Django, nie robi tego;)
Wreszcie, myślę, że jest coś do powiedzenia na temat sposobu, w jaki Django jest sprzedawany, to znaczy, że tak naprawdę nie był sprzedawany przez długi czas, a przynajmniej nie w tym sensie, że, powiedzmy, Rails był sprzedawany. Dopóki Django 1.0 nie wylądowało, wysiłek "marketingowy" składał się głównie z blogowania (i było kilka znaczących incydentów, w których ludzie byli proszeni o trochę stonowanie), rozmów na PyCon, a następnie głównie po prostu ulepszania frameworka, budowania z nim fajnych rzeczy i pozwalając, aby wyniki mówiły same za siebie. Teraz, oczywiście, w świecie post-1.0 mamy DSF i DjangoCon oraz konsultantów zorientowanych na biznes, którzy prowadzą szkolenia, mnóstwo książek i całą resztę, ale to wciąż jest całkiem nowe.
Spodziewam się, że będzie luz, tak jak to było z Railsami, i tak naprawdę myślę, że od jakiegoś czasu się rozwija i już się zaczął. Ale do tej pory myślę, że czynniki, które tu wymieniłem, są przynajmniej głównymi czynnikami stojącymi za konsekwentnym, stałym wzrostem popularności, które Django widziało od czasu jego pierwszego wydania.