2008-09-25 29 views
17

Tôi đang lên kế hoạch chuyển một ứng dụng PHP sang Python. Ứng dụng này chủ yếu là thu thập và xử lý dữ liệu. Ứng dụng chính chạy như một ứng dụng dòng lệnh độc lập. Có một giao diện web cho ứng dụng mà về cơ bản là một giao diện báo cáo trọng lượng rất nhẹ.Phát triển web Python - có hoặc không có khuôn khổ

Tôi không sử dụng một khung trong phiên bản PHP, nhưng là mới với Python, tôi tự hỏi nếu nó sẽ là thuận lợi để sử dụng một cái gì đó như Django hoặc ít nhất là Genshi. Thông báo trước là tôi không muốn phân phối ứng dụng của mình bị choáng ngợp bởi các phần khung tôi cần phân phối cùng với ứng dụng.

Chỉ sử dụng nhập cgi bằng Python là cách tốt nhất để đi trong trường hợp này? Tôi sẽ có xu hướng nghĩ rằng một khuôn khổ là quá nhiều chi phí, nhưng có lẽ tôi không suy nghĩ một cách rất "python" về họ. Bạn có đề xuất gì trong trường hợp này?

+1

Theo dõi, tôi đã trở thành một fan hâm mộ lớn của Tornado. Nó đủ lỏng lẻo cho nam giới và tôi thấy nó rất chắc chắn. –

+2

Phụ nữ có thích các khung công tác mạnh mẽ hơn không? : D –

Trả lời

14

Dòng lệnh Python, IMO, chắc chắn xuất hiện trước. Làm điều đó để làm việc, vì đó là cốt lõi của những gì bạn đang làm.

Vấn đề là sử dụng ORM của khung công tác web từ ứng dụng dòng lệnh không hiển nhiên. Django cung cấp hướng dẫn cụ thể để sử dụng ORM của họ từ một ứng dụng dòng lệnh. Đó là những gì gây phiền nhiễu lúc đầu, nhưng tôi nghĩ rằng họ là một cuộc sống tiết kiệm trong thời gian dài. Tôi sử dụng nó rất nhiều cho việc tải lên khổng lồ các tệp do khách hàng cung cấp.

Không sử dụng CGI trần. Nó không phải là không thể, nhưng quá nhiều thứ có thể đi sai, và tất cả chúng đều được giải quyết bởi các khuôn khổ. Tại sao tái tạo lại một cái gì đó? Chỉ cần sử dụng mã của người khác.

Các khung liên quan đến học tập, nhưng không có "chi phí thực". Chúng không chậm. Chúng là mã bạn không phải viết hoặc gỡ lỗi.

  1. Tìm hiểu một số Python.

  2. Làm hướng dẫn Django.

  3. Bắt đầu xây dựng ứng dụng web.

    a. Bắt đầu một dự án Django. Xây dựng một ứng dụng nhỏ trong dự án đó.

    b. Xây dựng mô hình mới của bạn bằng cách sử dụng ORM Django. Tạo một bài kiểm tra đơn vị Django cho mô hình. Hãy chắc chắn rằng nó hoạt động. Bạn sẽ có thể sử dụng các trang quản trị mặc định và thực hiện nhiều thao tác xung quanh.Chỉ cần không xây dựng toàn bộ trang web.

  4. Tải ứng dụng dòng lệnh của bạn để hoạt động bằng cách sử dụng Django ORM. Về cơ bản, bạn phải finesse các tập tin cài đặt cho ứng dụng này để làm việc độc đáo. Xem phần settings/configuration.

  5. Khi bạn đã có dòng lệnh và quản trị viên mặc định đang chạy, bạn có thể hoàn thành ứng dụng web.

Đây là quy tắc vàng của khung: Đó là mã bạn không phải viết, gỡ lỗi hoặc duy trì. Sử dụng chúng.

+0

Trong việc phát hành ứng dụng của tôi, tôi sau đó phát hành nó với sự phụ thuộc Django nhưng không phân phối Django, đúng không? Tôi cũng quan tâm đến việc tạo ra những thứ quá nặng với mã không cần thiết trong ứng dụng dòng lệnh. Tôi sẽ xem xét kỹ hơn tại Django, cảm ơn. –

+0

Django là một khung ứng dụng web. Bạn cài đặt nó trên một máy chủ web để sử dụng nó. Nếu bạn muốn quyên góp nó vào miền công cộng, bạn tặng ứng dụng của mình - không có gì khác. –

4

Phụ thuộc vào quy mô của dự án. Nếu bạn chỉ có một vài tập lệnh php trước đó được gọi là ứng dụng độc lập của bạn thì có lẽ tôi sẽ tìm một ứng dụng cgi.

Nếu bạn có sử dụng cho cơ sở dữ liệu, viết lại url, tạo khuôn mẫu, quản lý người dùng và như vậy, thì sử dụng khung là một ý tưởng hay.

Và tất nhiên, trước khi bạn chuyển nó, hãy cân nhắc xem nó có đáng để chuyển đổi ngôn ngữ hoặc nếu có các tính năng Python cụ thể mà bạn cần.

Chúc may mắn!

+0

Cảm ơn lời khuyên. Hầu hết các mối quan tâm khuôn khổ bạn liệt kê không thực sự trong khu vực mà tôi quan tâm, do đó, đó là tình trạng khó khăn của tôi. –

0

Tùy thuộc vào cách bạn sắp phân phối ứng dụng của mình.
Nếu nó chỉ được sử dụng trong nội bộ, hãy truy cập django. Thật vui khi được làm việc với nó. Tuy nhiên, django thực sự rơi ngắn vào nhiệm vụ phân phối; django-ứng dụng là một nỗi đau để thiết lập.

+1

Cẩn thận hơn? Có thiết lập hai bản thân mình tôi không nhìn thấy những gì là khó khăn như vậy? –

+0

quy tắc mod_python. Công trình tuyệt vời cho tôi. –

+0

Tôi đồng ý, tôi đã sử dụng mod_python với trac và nó đã được dễ dàng để thiết lập. –

3

Gần đây, tôi đã chuyển một ứng dụng PHP sang Python bằng cách sử dụng web.py. Khi các khung công tác đi, nó rất nhẹ với các phụ thuộc tối thiểu và nó có xu hướng tránh xa con đường của bạn, vì vậy nó có thể là sự thỏa hiệp mà bạn đang tìm kiếm. Tuy nhiên, tất cả phụ thuộc vào ứng dụng ban đầu của bạn, bởi vì với một ứng dụng lớn, lợi thế của việc có một khung công tác đầy đủ tính năng xử lý hệ thống ống nước có xu hướng vượt quá những nhược điểm liên quan đến việc phải kéo xung quanh tất cả các mã khuôn khổ.

+0

Cảm ơn những người đứng đầu lên, tôi sẽ kiểm tra xem nó ra. –

2

Django giúp bạn có thể nhanh chóng thoát ra khỏi trang web, điều đó chắc chắn. Bạn không cần phải là một bậc thầy Python để sử dụng nó, và vì nó rất là pythonic trong thiết kế của nó, và thực sự không có bất kỳ "ma thuật" nào đang diễn ra, nó sẽ giúp bạn học Python trên đường đi.

Bắt đầu với các ví dụ, hãy xem một số chương trình truyền hình django từ TwiD và bạn sẽ thực hiện theo cách của mình.

Bắt đầu chậm, chỉnh sửa quản trị viên và chơi với trình quản lý thông qua trình bao là cách bắt đầu. Một khi bạn có một xử lý trên ORM và làm thế nào những thứ làm việc, bắt đầu xây dựng những thứ thực sự!

Khuôn khổ sẽ không gây ra bất kỳ vấn đề hiệu suất nào, như S. Lott nói, đó là mã bạn không phải duy trì và đó là loại tốt nhất.

+0

Vâng mối quan tâm chính của tôi là Django là quá nhiều khuôn khổ cho nhu cầu của tôi. 90% ứng dụng nằm ngoài lớp web. Tôi lo ngại Django là quá mức cần thiết. Cảm ơn những người đứng đầu về cách bắt đầu với nó, tôi chắc chắn muốn biết điều đó, ngay cả khi không cho dự án này. –

11

Bạn có thể cân nhắc việc sử dụng một cái gì đó như web.py để dễ dàng phân phối (vì nó nhỏ) và cũng dễ dàng điều chỉnh các công cụ khác của bạn vì nó không yêu cầu bạn gửi lên khung như vậy Django có.

Hãy cảnh báo trước, tuy nhiên, nó không phải là khung được yêu thích nhất trong cộng đồng Python, nhưng nó có thể chỉ là điều dành cho bạn. Bạn cũng có thể xem web2py, nhưng tôi biết ít hơn về điều đó.

+0

Cảm ơn! Tôi đánh giá cao những người đứng đầu. –

+0

Tôi đã xem qua bài đăng này một thời gian trước và nó cũng đã truyền cảm hứng cho tôi để xem xét web.py. Tôi đã viết một bài đăng trên blog về chủ đề này, điều này cũng có thể hữu ích cho bất kỳ ai nghĩ đến việc xem xét web.py hoặc bắt đầu sử dụng nó: http://www.drcoen.com/2010/11/web-programming- với-python-và-web-py-kinh nghiệm của tôi / – eclipse31

2

Đi cho một khuôn khổ. Các công cụ cơ bản như xử lý phiên là một cơn ác mộng nếu bạn không sử dụng một vì Python không phải là chuyên ngành web như PHP.

Nếu bạn nghĩ django là quá nhiều, bạn có thể thử một cái nhẹ hơn như web.py rất nhỏ nhưng vẫn tiện dụng.

2

Vì tình yêu của pete, hãy sử dụng khung! Có nghĩa là hàng chục khuôn khổ ra khỏi đó, từ cherrypy để django để albatross để ... tốt .. bạn tên nó. Trong thực tế, số lượng lớn các khung công tác web là những gì mọi người chỉ ra khi họ rên rỉ về sự phổ biến của Rails.

Cộng đồng phát triển web Python được chia ra không có tiếng nói duy nhất. Nhưng đó là một chủ đề khác hoàn toàn! Vấn đề là, có "bộ công cụ web" (ví dụ như albatross) khá nhẹ nhưng đủ mạnh để giúp bạn trong suốt cả ngày (ví dụ: tự động xác minh bot không thực hiện gửi biểu mẫu đơn giản giả hoặc giúp giữ MVC sạch).

Nếu bạn muốn một cái gì đó không phải là "quá nhiều khuôn khổ" nhìn ở đây:

http://wiki.python.org/moin/WebFrameworks

Nhìn dưới "Basic Khung Cung cấp Templating". Tất cả chúng đều nhẹ và làm tất cả những thứ "không sáng tạo lại bánh xe" mà không cần phải đẩy một chiếc xe tải Mac lên bạn.

Các vấn đề liên quan