Nếu tôi là bạn, trước tiên tôi có thể xem liệu giải pháp dựa trên web dựa trên Django có lừa. Nếu bạn cần một cái nhìn tốt hơn một chút, hãy thêm jQuery vào hỗn hợp. Nếu nó cung cấp cách chức năng quá ít, đi cho PyQt. Nếu bạn có nhiều ứng dụng rất nhỏ, hãy kết hợp các công nghệ. Dưới đây, bạn tìm thấy lý do của tôi (hơi dài) cho đề xuất này.
webapp vs ứng dụng desktop
Một năm trước, chúng tôi đã có một db kinh doanh và cần một front-end. Chúng tôi phải quyết định sử dụng công nghệ nào cho giao diện người dùng.Chúng tôi xem xét:
- PyQt
- dựa trên Web (xem here cho một tổng quan về web frame-công trình cho Python)
Những lợi thế cho PyQt từ quan điểm của chúng tôi:
- Trải nghiệm C++ trước đây với Qt mà từ đó chúng tôi biết rằng Qt phù hợp cho công việc.
- Tất cả các công cụ cần thiết được bao gồm.
- Dễ dàng phát triển các ứng dụng khách phong phú.
Tuy nhiên, chúng tôi đã quyết định chống lại PyQt và giải pháp dựa trên web thay thế. Lý do là:
- Các yêu cầu đối với front-end là khiêm tốn và dễ dàng để làm trong một trình duyệt (chủ yếu là báo cáo, một số hình thức để nhập dữ liệu hoặc chạy chức năng).
- Triển khai ứng dụng (và các phiên bản mới, sửa lỗi, v.v.) dễ dàng hơn nhiều vì mọi thứ chỉ xảy ra trên máy chủ trong môi trường được kiểm soát.
- Điều khiển truy cập/xác thực/quyền là "miễn phí" vì nó là một phần của máy chủ (trong trường hợp của chúng tôi Apache sử dụng Xác thực thư mục hoạt động) và trình duyệt, điều quan trọng đối với chúng tôi.
- Ứng dụng cần kết nối máy chủ dù sao và không phải lưu trữ bất kỳ thứ gì ở phía khách hàng.
Tóm lại: giao diện người dùng giàu tính năng với nhiều chức năng trong môi trường triển khai được kiểm soát có thể dễ dàng triển khai hơn với Qt. Đối với các giao diện người dùng có trọng lượng nhẹ, giải pháp dựa trên máy chủ có vẻ tốt hơn đối với chúng tôi.
Khung web nào?
Bây giờ chúng tôi đã quyết định về một công nghệ, chúng tôi phải chọn một khuôn khổ. Chúng tôi nghiên cứu một chút, và nhìn hai lựa chọn thay thế một cách chi tiết:
- Django
- Một stack của phần mềm bao gồm CherryPy như điều phối (để phù hợp với yêu cầu http đến chức năng và tất cả những thứ liên quan), Mako như một khuôn mẫu thư viện để tạo các trang web, SQLAlchemy dưới dạng ORM và jQuery cho chức năng phía máy khách.
Chúng tôi đã đánh giá hai giải pháp thay thế và cuối cùng là giải pháp thay thế cho hai giải pháp thay thế. Quyết định này được thúc đẩy bởi các yêu cầu đầu cuối "ánh sáng nhẹ" thực sự của chúng tôi (rất nhiều ứng dụng rất nhỏ). Một chồng phần mềm - mà chúng tôi có thể trộn và kết hợp khi cần - dường như tốt hơn cho chúng tôi. Chúng ta có thể tái sử dụng SQLAlchemy trong các tình huống, nơi mà chúng ta không cần một web-front-end, chúng ta chỉ có thể sử dụng CherryPy mà không có một thư viện templating và một ORM, và cứ thế. Trong nhiều trường hợp khác, tôi tuy nhiên sẽ chọn Django trên ngăn xếp này.
Tóm lại:
- một lớn, phức tạp ứng dụng -> PyQt
- một bộ relativily tương tự, straigtforward báo cáo, biểu mẫu, vv với một look-and-feel -> Django
- một bộ tương đối đa dạng về những thứ khác nhau về yêu cầu và công nghệ được sử dụng hoặc sử dụng lại một số công nghệ trong các trường hợp khác -> kết hợp công nghệ khi cần
+1: Nó có thể được đóng gói để chạy trên máy tính để bàn như thể nó là một ứng dụng độc lập. Google "Django Desktop" cho rất nhiều gợi ý. –