2012-05-27 23 views
7

Tôi không muốn đè nặng lên tất cả các chi tiết của bạn, nhưng về cơ bản tôi là sinh viên năm thứ hai không có kinh nghiệm về Web dev. Về cơ bản, tôi muốn tạo một "ứng dụng web" nhỏ có đầu vào từ biểu mẫu html, có kịch bản lệnh python thực hiện một số phép tính và hiển thị lại các kết quả đó trong trình duyệt của bạn.Ứng dụng web đầu tiên của tôi (Python): sử dụng CGI hoặc một khung công tác như Django?

Hiện tại, tôi đã tạo biểu mẫu và tập lệnh. Tuy nhiên, khi tôi thử kiểm tra biểu mẫu, thay vì chạy tập lệnh, trình duyệt của tôi sẽ cố gắng tải xuống. Theo hiểu biết của tôi, đây là một vấn đề về script cgi, và tôi phải tạo một máy chủ web để kiểm tra kịch bản này.

Và các con tôi bị kẹt. Tôi biết rất ít về các máy chủ web và cách thiết lập chúng. Trên hết, tôi đã nghe rằng kịch bản GCI là một điều của quá khứ và yêu cầu chi phí chính để chạy đúng cách.

Điều này dẫn đến câu hỏi của tôi. Làm cách nào để hoàn thành ứng dụng của tôi và thử nghiệm tập lệnh cgi của tôi? Tôi cài đặt apache và lộn xộn xung quanh với nó hay tôi nên nhìn vào một cái gì đó như động cơ ứng dụng google? Có cách nào khác để hoàn thành nhiệm vụ này mà không có tập lệnh cgi? Nơi làm khuôn khổ như Django phù hợp với điều này?

+2

Một chút phân đôi giả ở đây: Có rất nhiều lãnh thổ giữa Django và CGI. Cá nhân tôi muốn giới thiệu webapp2, được đóng gói với App Engine và rất nhẹ. Tuy nhiên, mức thấp tương đương với CGI trên kiến ​​trúc hiện đại (Python) là WSGI. –

Trả lời

9

Django, trong khi đẹp, được bao quát và được hỗ trợ tốt, đôi khi quá nhiều đối với một ứng dụng web nhỏ. Django muốn bạn chơi theo quy tắc của nó ngay từ đầu, bạn sẽ phải tránh những thứ như cơ sở dữ liệu và bảng quản trị nếu bạn không cần chúng. Nó cũng dễ dàng hơn, với Django, để làm theo cách bố trí dự án của nó, ngay cả khi nó quá phức tạp cho một ứng dụng đơn giản.

Cái gọi là khung vi mô có thể phù hợp với bạn tốt hơn cho ứng dụng nhỏ của bạn. Chúng được xây dựng theo nguyên tắc ngược lại: sử dụng tối thiểu các tính năng hiện tại, thêm nhiều hơn khi bạn cần chúng.

  • Flask được dựa trên Werkzeug thư viện WSGI và Jinja2 khuôn mẫu (sau này là chuyển đổi), là tài liệu rộng rãi (với notes concerning virtualenv and stuff) và rất phù hợp cho các ứng dụng nhỏ và lớn hơn như nhau. Nó đi kèm với một máy chủ tự động tải lại dev (không cần Apache trên máy dev của bạn) và trình gỡ lỗi tương tác Werkzeug-powered. Có các tiện ích mở rộng cho những thứ như HTML formsdatabase ORM.

  • Bottle cũng nhỏ như microframework có thể nhận được, bao gồm 1 (một) tệp, bao gồm máy chủ dev. Thả nó vào thư mục dự án của bạn và bắt đầu hack. Công cụ tạo khuôn mẫu SimpleTemplate tích hợp có thể chuyển đổi được, nhưng máy chủ dev là flakier so với Flask. Tài liệu ít hoàn chỉnh hơn, và theo ý kiến ​​của tôi, toàn bộ điều này ít được đánh bóng và thuận tiện hơn như Flask.

Trong cả hai trường hợp, bạn sử dụng máy chủ dev cục bộ và sau đó triển khai sử dụng WSGI, giao diện máy chủ cho các ứng dụng web Python hỗ trợ cả hai. Có nhiều cách để triển khai một ứng dụng WSGI, Apache mod_wsgi là một trong những cách phổ biến.

Tôi hoàn toàn đi với Flask trừ khi một phụ thuộc (Bottle) tốt hơn ba (Flask, Jinja2 và Werkzeug).

(Có rất nhiều khung công tác khác nữa, vì vậy hãy đợi người dùng của họ đến và nói về chúng. Tôi khuyên bạn nên tránh web.py: nó hoạt động nhưng đầy ma thuật và không phù hợp so với bình hoặc chai .)

-1

Django đi kèm với máy chủ riêng của nó, nhưng trong trường hợp của bạn tôi sẽ giới thiệu apache và mod_python vì nó có vẻ là một trang web khá đơn giản mà bạn đang xây dựng.

Thiết lập Apache thật dễ dàng và tìm kiếm đơn giản trên web sẽ cung cấp cho bạn tất cả những gì bạn cần. Bạn có thể tìm thêm thông tin về mod_python here đọc một chút về nó và sau đó google sau một hướng dẫn phù hợp với nhu cầu của bạn.

+3

Đề xuất 'mod_python' luôn là ý tưởng tồi. Nó không được dùng để ủng hộ 'mod_wsgi'. – ThiefMaster

+1

"Hiện tại mod_python không được phát triển hoạt động. Điều này không có nghĩa là nó" chết "như một số người đã tuyên bố. Nó có nghĩa là mã và dự án đủ trưởng thành khi cần rất ít để duy trì nó." –

+2

https://docs.djangoproject.com/en/1.3/howto/deployment/modpython/ - * Hỗ trợ cho mod_python đã không được chấp nhận và sẽ bị xóa trong Django 1.5. Nếu bạn đang định cấu hình triển khai mới, bạn nên xem xét sử dụng mod_wsgi hoặc bất kỳ chương trình phụ trợ nào khác được hỗ trợ. * – ThiefMaster

2

Lý do thiết lập và duy trì máy chủ web của riêng bạn nếu bạn có thể sử dụng công cụ ứng dụng. Nó có một SDK tuyệt vời để kiểm tra mã của bạn. Dưới đây là ví dụ https://developers.google.com/appengine/docs/python/gettingstarted/handlingforms

Và Django bạn sẽ tìm thấy ở đây: https://developers.google.com/appengine/docs/python/gettingstarted/templates Tôi thích sử dụng Jinja để tạo khuôn mẫu.

3

Dường như hầu hết các phát triển web python dường như được thực hiện bởi khung công tác trong những ngày này. Có một vài lý do cho việc này:

  1. một loạt các công cụ hoàn thiện. Django đã xây dựng trong auth người dùng, được xây dựng trong quản lý cơ sở dữ liệu, được xây dựng trong các phiên, được xây dựng chỉ là về tất cả mọi thứ ORM cho phép bạn liên tục hỗ trợ một vài cơ sở dữ liệu.

  2. Trình tạo web được tích hợp sẵn. Các khung python lớn hơn như django và giá treo đã được xây dựng trong máy chủ web. Django có một máy chủ web rất đơn giản python manage.py startserver (đơn giản) Điều đó làm cho nó cực kỳ dễ dàng để tạo và gỡ lỗi các ứng dụng. Nó là đơn luồng để thả một trình gỡ lỗi vào nó là không đau

  3. Cộng đồng lớn. Nếu bạn có một câu hỏi django nó sẽ được trả lời rất nhanh chóng vì vậy cộng đồng là rất lớn.

Hướng dẫn django sẽ giới thiệu cho bạn tất cả các khía cạnh chính của phát triển. Nó chỉ là 4 trang và bạn sẽ có thể nhận được ứng dụng của bạn đi đơn giản hơn rất nhiều so với việc phải đọc, học và fiddle với một thiết lập apache. https://docs.djangoproject.com/en/dev/intro/tutorial01/

Mặc dù django cho bây giờ có thể quá mức cần thiết nếu ứng dụng của bạn chỉ là 1 biểu mẫu và tập lệnh để xử lý.Do khuôn khổ thử nghiệm liền mạch của nó, nó khá dễ dàng để phát triển bất kỳ dự án nào. Tôi chưa bao giờ sử dụng bình hoặc chai hoặc các loại microframework khác, nhưng tôi sẽ ghi nhớ dự án của bạn sẽ ở đâu trong tương lai.

Đối với nơi django phù hợp với điều này, nó là một khung ngăn xếp đầy đủ bao gồm trình bày (mẫu), quản lý dữ liệu (máy chủ orm), xác thực, middleware, biểu mẫu ... mọi thứ cần thiết để tạo ra một ứng dụng web hoàn toàn bao gồm. Django và hầu như tất cả các khuôn khổ python khác thực hiện tiêu chuẩn wsgi. Nó là một giao diện cho phép tương tác giữa các máy chủ web. http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface nó khá khô và bạn sẽ không bao giờ phải giao diện trực tiếp. Đó là những gì các khung làm theo mui xe.

4

Một cách để truy cập webapp nhanh chóng là hiểu biết đầu tiên và sau đó sửa đổi, ví dụ như ví dụ "guestbook" của Máy ứng dụng. Điều này có lợi ích mà nhiều tedium khác cần thiết của việc chạy một máy chủ web và thiết lập một máy chủ cơ sở dữ liệu (giả sử bạn cần sự kiên trì) được thực hiện cho bạn. App Engine cũng cung cấp một môi trường phát triển khá linh hoạt. Đó chắc chắn không phải là cách duy nhất để đi, và tôi sẽ thừa nhận sự thiên vị trong việc giới thiệu nó, nhưng nó là ma sát khá thấp.

Việc viết mã GCI hầu như không phải là vấn đề của quá khứ, mặc dù đó không phải là những gì những đứa trẻ tuyệt vời đang làm. CGI có lợi ích, và lời nguyền, phơi bày nhiều hơn của hệ thống ống nước thô.Nó buộc bạn phải hiểu rất nhiều về kiến ​​trúc web nguyên thủy (ở mức độ thấp), nhưng nó cũng là một chút cắn lớn để nhai nếu bạn có vấn đề ngay lập tức để giải quyết có thể được giải quyết bằng các phương tiện đơn giản hơn.

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