如果我是你,我可能会首先看看基于Django的基于web的解决方案是否起作用。如果您需要更好的外观,可以将jQuery添加到这个组合中。如果它提供的功能太少,请使用PyQt。如果你有很多非常小的应用程序,可以使用多种技术。下面,你会发现我(有些冗长)的理由。
Webapp与桌面应用程序
一年前,我们有一个商业数据库,需要一个前端。我们必须决定在前端使用什么技术。我们认为:基于Web(查看here了解Python的Web框架工程的概述)
从我们的角度来看,PyQt的优势:以前的C++经验与Qt,我们知道Qt适合于任务。
包括所有必要的工具。
容易开发富有的客户。
但是,我们决定不使用PyQt,而是使用基于web的解决方案。原因是:对前端的要求不高,而且在浏览器中很容易实现
(主要是报告,一些用于输入数据或运行函数的表单)。
应用程序的部署(以及新版本、错误修复等)
更容易,因为所有事情都只发生在服务器上的受控环境中。
访问控制/身份验证/权限是“免费的”,因为它是服务器(在我们的例子中是使用Active Directory身份验证的Apache)和浏览器的一部分,这对我们很重要。
应用程序无论如何都需要服务器连接,不必在客户端存储任何东西。
简而言之:功能丰富的前端在受控部署环境中具有许多功能,使用Qt可能更容易实现。对于我们轻量级的前端,基于服务器的解决方案对我们来说似乎更好。
哪个web框架?
既然我们已经决定了一项技术,我们必须选择一个框架。我们进行了一些研究,并详细研究了两种备选方案:一个软件栈,由CherryPy作为分派器(将http请求与功能和所有相关的东西相匹配)、Mako作为生成网页的模板库、SQLAlchemy作为ORM和jQuery作为客户端功能组成。
我们评估了两个备选方案,最后确定了第二个方案。这个决定是由我们真正的“轻量级”前端需求(很多非常小的应用程序)驱动的。一堆软件——我们可以根据需要进行混合和匹配——对我们来说似乎更好。我们可以在不需要web前端的情况下重用SQLAlchemy,我们可以只使用CherryPy而不使用模板库和ORM,等等。在许多其他情况下,我会选择Django而不是这个堆栈。
总而言之:一个大型、复杂的应用程序->;PyQt
一套相对相似、简洁的报告、表格等,只有一个外观和感觉->;Django
一组相对不同的事物,它们在需求和使用的技术上有很大的不同,或者在其他情况下重复使用某些技术->;根据需要混合使用各种技术