Lịch sử về sự nổi tiếng của Django [đã đóng]


84

Chuỗi sự kiện nào đã khiến Django trở thành khuôn khổ web Python phổ biến nhất .. và đến nay vẫn vậy? Mặc dù một số khuôn khổ khác tồn tại.

Lưu ý : Câu hỏi này không mang tính tranh luận hay đối đầu . Tôi chỉ yêu cầu (khách quan) "chuỗi sự kiện" dẫn đến sự phổ biến thực sự của nó. Nhận thức được động lực của việc chấp nhận phần mềm , tôi không có ý định bất kỳ ai tranh luận về tính ưu việt của kỹ thuật.


14
Django trở thành khuôn khổ web Python phổ biến nhất là một sự thật, không phải là một ý kiến ​​chủ quan. "chuỗi sự kiện" có nghĩa là các quyết định thiết kế, thời gian, tiếp thị, v.v. dẫn đến sự phổ biến của nó. Điều gì là vô lý về nó?
Sridhar Ratnakumar

2
Đây là một câu hỏi thực sự tốt.
Joshua Partogi

Tôi sẽ quan tâm theo dõi để tìm hiểu xem liệu các quyết định thiết kế, thời gian, tiếp thị, v.v. này có được biết đến với đủ độ chính xác và kịp thời để được coi là "lịch sử" hay không.
John Saunders

Tôi không đồng ý với việc kết thúc câu hỏi này, nhưng nó có thể tốt hơn trên CS .
Kyle Strand

Câu trả lời:


107

Tôi nghĩ rằng có một vài yếu tố, sự kết hợp của chúng lớn hơn tổng trọng lượng riêng lẻ của chúng.

Một chỉ đơn giản là thời gian: Django xuất hiện ngay khi làn sóng cường điệu Rails lớn đầu tiên đang bùng phát, và vì vậy nó ngay lập tức được miêu tả như là "câu trả lời của Python cho Rails". Điều đó dẫn đến một số lượng không đáng kể các nhãn cầu về dự án gần như ngay từ đầu. Thực tế là Adrian đã có mặt tại buổi gặp mặt "Rắn và hồng ngọc" ở Chicago và tham gia vào các cuộc nói chuyện song song về Rails và Django đã làm rất nhiều điều đó.

Một yếu tố khác là Django luôn là bản cài đặt một gói (tốt, không hoàn toàn: bạn vẫn cần một bộ điều hợp cơ sở dữ liệu, trừ khi bạn đang sử dụng Python 2.5+ và sử dụng SQLite, nhưng đủ gần). Các lựa chọn thay thế không phải Zope, tất cả đều tập trung vào việc để lại các lựa chọn thành phần trong tay nhà phát triển, đòi hỏi phải làm việc nhiều hơn một chút chỉ để đến điểm mà bạn có thể thực hiện một hướng dẫn cơ bản: bạn cần phải tìm kiếm một ORM, một ngôn ngữ mẫu, v.v., v.v. và cài đặt và cấu hình tất cả chúng. Mặc dù điều đó đã tốt hơn nhiều trong những năm qua, nhưng tôi nghĩ ký ức kéo dài về điều đó vẫn còn ảnh hưởng.

Và Django đã ra khỏi cổng với tài liệu (nếu tôi có thể tự nói như vậy) vượt xa tiêu chuẩn thông thường cho các dự án mã nguồn mở và chỉ ngày càng tốt hơn theo thời gian. Hướng dẫn, đối với tất cả nhiều lỗi của nó, đánh vào một số điểm cao khiến Django trở nên hữu ích và phần còn lại của tài liệu luôn có chất lượng tốt, kết hợp cả tham chiếu API và các bit "cách thực hiện" quan trọng khi cần thiết. Điều này tạo ra một trải nghiệm tuyệt vời và giúp ích cho quá trình học tập sau hướng dẫn (điều mà Zope luôn cản trở).

Tôi cũng nghĩ rằng có một nhận thức - đúng hay sai - nói rằng, Pylons hoặc Werkzeug thực sự tốt hơn cho các nhà phát triển có kinh nghiệm, những người đã biết cách của họ về WSGI và hệ sinh thái web Python; Thực tế là chúng có xu hướng trở thành lựa chọn mạnh mẽ để lấy các thư viện yêu thích hiện có của bạn và kết hợp chúng lại với nhau là nguồn gốc của điều này, tôi nghĩ và có lẽ thúc đẩy một số người mới hơn hướng tới cách tiếp cận tích hợp của Django. Tất nhiên, mặt trái của nó là rất nhiều người tốt hơn hết nên tìm hiểu kỹ càng trước khi thử Django thì không làm như vậy;)

Cuối cùng, tôi nghĩ có điều gì đó cần nói về cách tiếp thị của Django, có nghĩa là nó thực sự đã không được bán trên thị trường trong một thời gian dài, hoặc ít nhất là không phải theo nghĩa mà nói, Rails đã được tiếp thị. Cho đến khi Django 1.0 cập bến, nỗ lực "tiếp thị" chủ yếu bao gồm mọi người viết blog (và có một số sự cố đáng chú ý khi mọi người được yêu cầu giảm bớt nó một chút), các cuộc nói chuyện tại PyCon và sau đó chủ yếu chỉ là cải thiện khuôn khổ, xây dựng những điều thú vị với nó và để kết quả tự nói lên. Tất nhiên, bây giờ trong thế giới hậu 1.0, chúng tôi có DSF và DjangoCon và các nhà tư vấn định hướng kinh doanh đang thực hiện các buổi đào tạo và rất nhiều sách và tất cả những thứ còn lại, nhưng tất cả vẫn còn khá mới.

Tôi hy vọng rằng sẽ có một phản ứng dữ dội, giống như đã có với Rails, và trên thực tế, tôi nghĩ rằng nó đã được sản xuất một thời gian và đã bắt đầu. Nhưng cho đến nay, tôi nghĩ rằng các yếu tố tôi đã liệt kê ở đây ít nhất là những yếu tố chính đằng sau sự tăng trưởng ổn định, ổn định về mức độ phổ biến mà Django đã thấy kể từ khi phát hành lần đầu.


31
Không cần phải khiêm tốn: chất lượng và số lượng tài liệu của Django là một điểm cộng lớn cho nó. Làm tốt lắm.
Ned Deily

1
"Cho đến khi Django 1.0 cập bến, nỗ lực" tiếp thị "chủ yếu chỉ là những người viết blog ..." Bạn có đang quên hai cuốn sách đã xuất bản (tức là đã xuất bản trong một thời gian dài) trước 1.0, một trong số chúng là của bạn? Điều đó nghe có vẻ như một số tiếp thị nặng nề đối với tôi.
Cristian

9
Hai cuốn sách không mang lại hiệu quả "marketing nặng nề", ít nhất là đối với tôi. Và, thành thật mà nói, tôi muốn giữ lại của tôi cho đến khi phiên bản 1.0 ra mắt, nếu chỉ vì nó sẽ đơn giản hóa cuộc sống của tôi một chút.
James Bennett

4
Bạn có thể nên đề cập đến sự tham gia của bạn với Django, vì nó không nổi tiếng trên SO như blog của bạn. Tôi dường như nhớ bạn đã viết gì đó về điều này trước đây, mặc dù tôi không thể tìm thấy liên kết atm.
Xiong Chiamiov

7
Khá dễ dàng để nhấp vào tên của tôi và xem tôi là ai.
James Bennett

112

Nhiều khuôn khổ web Python đã tồn tại khi Django xuất hiện vào năm 2005 - thực sự, trò đùa đã xảy ra, lúc đó, Python là "ngôn ngữ có nhiều khuôn khổ web hơn từ khóa" (và Guido đã từ chối đề xuất của tôi để sửa điều đó trong Py3k bằng cách thêm nhiều từ khóa). Bây giờ, "django" theo một cụm từ tìm kiếm hơi mơ hồ (đó cũng là tên của một người chơi guitar nổi tiếng, người đã truyền cảm hứng cho cuộc đời của một bộ phim Woody Allen, v.v.), tuy nhiên, hãy thêm "python" vào tìm kiếm để loại bỏ những ý nghĩa khác đó bạn có thể thấy ví dụ trong biểu đồ nàymức độ phổ biến tương đối của nó đã thay đổi như thế nào so với một khuôn khổ web Python cổ điển khác, Zope. Hầu hết là tăng trưởng ổn định theo quý so với quý trước, với một cú nhảy vọt đáng ngạc nhiên vào đầu quý 2 năm 2008 ... điều này chỉ xảy ra trùng với ngày Google công bố App Engine (không thể chứng minh nguyên nhân trong trường hợp đó, nhưng sự trùng hợp là ít nhất là thú vị ;-).

Về cơ bản, App Engine loại trừ bất kỳ khung web Python nào phụ thuộc sâu vào các thành phần được mã hóa C tùy chỉnh hoặc về bản chất yêu cầu chức năng "quan hệ nhiều"; trong số những ứng dụng chạy tốt chỉ với mã Python thuần túy, Django có lẽ là ứng dụng mà App Engine hỗ trợ trực tiếp và rõ ràng nhất. Tuy nhiên, đây chỉ là một sự thúc đẩy, bổ sung vào xu hướng tăng trưởng lành mạnh cơ bản của Django. Lời giải thích cho xu hướng đó (và thực sự là cho đội ngũ App Engine và quyết định của người dùng để hỗ trợ Django tốt như vậy) phải nằm ở các đặc điểm nội tại của chính Django.

Django đôi khi bị chỉ trích (bao gồm cả ... của bạn thực sự ;-) vì "quá ảo diệu" hoặc "quá nguyên khối", so với các lựa chọn thay thế như Pylons, TurboGears, Werkzeug, & c, có trọng lượng nhẹ hơn (đặc biệt là cái sau , yêu thích của tôi ;-), minh bạch hơn và cho phép hoán đổi dễ dàng hơn trong và ngoài các thành phần cụ thể (ORM, tạo khuôn mẫu, & c). Tuy nhiên, sự phổ biến của Django cho chúng ta biết rằng, đối với hầu hết những người quan tâm đến việc phát triển các trang web và ứng dụng phía máy chủ, những lựa chọn thiết kế này của Django được nhìn nhận một cách tích cực: Django được coi là một khung công tác rất phong phú và được tích hợp tốt (và nó có rất nhiều tiện ích bổ sung khởi động và các "plugin" đóng góp, nhưng đó là hệ quả nhiều hơn là nguyên nhân của sự phát triển của nó).

Dễ dàng bắt đầu, các "trang quản trị" tự động và tương tự - cũng như thực tế là Django có thể được điều chỉnh để tạo ra các trang / ứng dụng thực sự phong phú và phức tạp và đáp ứng các yêu cầu đặc biệt hoặc độc đáo, với nhiều kỹ năng và một số công việc - có lẽ là "tính năng giết người". Để sử dụng Werkzeug một cách tốt nhất, bạn cần hiểu HTTP và WSGI, đồng thời chọn và tích hợp bộ lưu trữ và tạo khuôn mẫu yêu thích của bạn - các nhà phát triển của các trang web và ứng dụng dựa trên Python (theo nghĩa nào đó, người dùng Rails hoặc người dùng PHP thậm chí còn phổ biến hơn! -) đang "bỏ phiếu bằng cách chia sẻ tư duy của họ" cho một môi trường mà họ không nhất thiết phải làm bất kỳ điều gì trong số đó, nhưng chủ yếu có thể tập trung vào miền ứng dụng của họ. Tôi sẽ phải thừa nhận rằng họ có thể có một điểm ;-).


3
Tôi nghĩ, với sự nổi tiếng của Django, một số quen thuộc với nó sẽ phục vụ bạn tốt; điều đó không loại trừ việc sử dụng repoze.bfg, werkzeug, v.v., khi chúng phù hợp hơn với ứng dụng hoặc trang web. Bạn có thể thực hiện một dự án bán đồ chơi từ đầu cho mỗi người trong số họ, nếu bạn có thời gian, và do đó có được sự đánh giá sâu sắc hơn về điểm mạnh và điểm yếu khiến chúng trở nên phù hợp hơn hoặc ít hơn tùy thuộc vào những gì mà dự án yêu cầu (tôi phải thừa nhận Tôi không có kinh nghiệm thực tế trực tiếp với repoze.bfg ...).
Alex Martelli

1
@Triptych, rõ ràng không phải lý do duy nhất , vì một số khuôn khổ khác ( không phải bất kỳ khuôn khổ nào : ví dụ: hãy nghĩ Zope! -) có thể áp dụng được. Tôi đoán suy nghĩ của tôi về những điểm cộng, đối với các nhà phát triển ứng dụng / trang web, của các khuôn khổ tích hợp phong phú và có phần "ma thuật" có thể đã làm ảnh hưởng đến quyết định cung cấp hỗ trợ chính cho cái gì (ví dụ: bằng cách làm cho nó tự động khả dụng mà không yêu cầu bất kỳ người dùng nào tải lên).
Alex Martelli

1
@cletus, Java có 50 từ khóa cho mỗi java.sun.com/docs/books/tutorial/java/nutsandbolts/… , Python 2.6 có 31 từ khóa mỗi len(keyword.kwlist)- ví dụ: tên kiểu không phải là từ khóa trong Python, v.v.
Alex Martelli

34
Tôi nghĩ rằng bạn bỏ lỡ một điểm quan trọng. Tài liệu Django là (chiều) tốt hơn so với bất kỳ khuôn khổ Python (cũng như tốt hơn so với tài liệu hướng dẫn đường ray, IMO)
agiliq

6
@Alex, tôi nghi ngờ rằng có ai đó thực sự đọc tài liệu bắt đầu kết thúc, nhưng hầu hết mọi người khi họ gặp sự cố đều nhấn tìm kiếm trên google. Có thể tìm thấy câu trả lời trong 5 phút bằng cách sử dụng các tài liệu đẹp thay vì 1 giờ tìm kiếm thông qua các bài đăng trên blog là một điểm cộng lớn (ít nhất là cho đến khi có StackOveflow, việc đặt câu hỏi ngu ngốc dễ dàng hơn nhiều;)
Edan Maor

22

Tôi có thể nghĩ đến ba lý do cho sự nổi tiếng của Django, chỉ một trong số đó đã được đề cập trong các câu trả lời khác theo như tôi thấy:

  1. Tài liệu. Nó được cấu trúc tốt, toàn diện và có thể tiếp cận từ một số cấp độ kỹ năng.

  2. Thiết kế. Thiết kế trực quan của quản trị viên, trang lỗi và trang web dự án vượt xa mức thiết kế được thấy với hầu hết các dự án mã nguồn mở.

  3. Sự đóng góp cho cộng đồng. Bắt đầu với nhóm tại World Online, Django đã sớm chọn được một số nhà truyền giáo có ảnh hưởng về mặt xã hội. Tôi không chắc bạn có thể nói rõ tầm quan trọng của các bài đăng trên blog như Django của Jeff Croft dành cho người không phải nhà phát triển (tôi nghĩ đó là tiêu đề).


13

"Yêu thích cá nhân của tôi, và tôi hy vọng rằng đó sẽ vẫn là yêu thích cá nhân trong một thời gian dài, là thứ mang tên Django" - Guido Van Rossum trên FLOSS hàng tuần tập 11, phát sóng ngày 4 tháng 8 năm 2006

[Nhấp vào đây] (nghe 1/3 cuối cuộc phỏng vấn)

Nghĩ rằng điều này có thể giúp ích? hoặc ít nhất là lý do tại sao Google chọn nó cho AppEngine?

tất nhiên, cộng đồng django (bao gồm cả nhà phát triển) đang làm rất nhiều điều đúng. Ví dụ (Một số phân tích trong các liên kết):

Cải thiện mô-đun: [Nhấp vào đây]

tài liệu kick ass Bấm vào đây

Ngoài ra còn có điều gì đó về cộng đồng khiến mọi người muốn đóng góp mà tôi vẫn chưa đặt tay vào: Nhấp vào đây

Tất nhiên, tất cả những điều đó dẫn đến việc Django trở thành một người ngoại lệ: Nhấp vào đây

Không có câu hỏi về sự nổi tiếng của Django.


1
Tôi nghĩ rằng câu trả lời này cung cấp một chút mà những người khác không. RẤT NHIỀU người đã mù quáng vào Django do nhận xét đó.
Jorge Vargas

Không có gì sai khi làm điều đó một cách mù quáng khi Guido mô tả nó như vậy. Tôi đã làm, và không bao giờ nhìn lại kể từ đó.
Lên.

3

Trong trường hợp của tôi, tôi đã mua cuốn sách TurboGears và vật lộn với sự mâu thuẫn của nó và con đường lộn xộn để giải thích mọi thứ. Sau đó, tôi nhận được cuốn sách Django, và thì đấy! Dự án trả tiền đầu tiên của tôi đã được tạo ra khi đang làm việc theo cách của tôi thông qua dự án mẫu trong sách. Điều đó cộng với tài liệu trực tuyến đã đóng dấu giao dịch. Đối với tôi, nó thật đơn giản: Tài liệu, tài liệu, tài liệu.


2

Tôi nhận thấy rằng nó thường được quảng cáo là tương đương với Ruby on Rails trong Python. Nó cũng có kết nối với Google (Google tổ chức các sự kiện Django và hỗ trợ nó trong App Engine của họ). Một khuôn khổ web được Google xác nhận phải có giá trị cho một cái gì đó. :)


2
Chắc chắn rồi, nhưng GAE đến muộn hơn nhiều trong quá trình này. Và Django đã trở nên phổ biến.
Sridhar Ratnakumar

1
@Sridhar, vâng - Tôi đã đưa ra cả hai điểm trong câu trả lời của mình: GAE đã mang lại cho Django một cú hích lớn vào ngày công bố của nó ... nhưng đó là một xu hướng tăng trưởng ổn định.
Alex Martelli

2

Ít nhất đối với tôi, một yếu tố quan trọng là Simon Willison và Adrian Holovaty đã là những người chơi nổi tiếng trong bối cảnh "Tiêu chuẩn web", cũng như Jeff Croft sau này.

Đó không chỉ là một con dấu chất lượng, mà còn làm cho Django rất thân thiện với web, tôn trọng HTTP, đánh dấu và thậm chí là cách làm việc nhanh chóng và bẩn thỉu, "gỡ lỗi in" mà những người đến từ PHP đã quen thuộc.

Tôi có thể đã sai rất nhiều ở đây, không có dữ liệu để sao lưu điều này, nhưng tôi cảm thấy rằng Django đã thu hút được nhiều sự chú ý hơn từ những người đến từ PHP, trái ngược với Rails có rất nhiều chuyển đổi từ Java / .NET.

Như những người khác đã lưu ý, tài liệu này là trên mức trung bình. Điều tốt nhất mà tôi đã thấy, theo như tôi nhớ lại.


0

Thực tế là có một số trang web có khối lượng lớn đã sử dụng Django (tức là lawrence.com, v.v.) - thậm chí trước 0,96 ngày - đã giúp tôi thuyết phục ban quản lý rằng sử dụng là an toàn. Những thứ như Pylons và Turbogears thực sự không có điều đó.


1
May mắn thay, những ngày đó đã qua, giờ đây giá treo đã có reddit.com và sourceforge (thông qua turbogears).
zzzeek

Tuy nhiên, Pylons vẫn chưa đạt 1.0, điều mà tôi cho là (chưa kiểm tra) có nghĩa là chúng thiếu các hứa hẹn về độ ổn định API của Django.
Xiong Chiamiov

-1

Về sự phổ biến của Django theo thời gian (nghĩa đen của tiêu đề câu hỏi của bạn, nếu không phải là câu hỏi thực tế của bạn), hãy xem xu hướng của google .


1
Liên kết xu hướng đó là sai. Như đã chỉ ra bởi @Alex Martelli, bạn cần đưa người chơi guitar ra ngoài.
Jorge Vargas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.