使用Python构建网络应用程序
这是我大约一周前问的两个问题的后续内容。简单来说,我正在为一个基于人工智能的网页应用程序构建原型,我在想应该用什么编程语言。最后的结论是,我应该选择像Python这样的语言,然后把一些关键部分转换成更快的语言,比如Java或C/C++。
这个想法我觉得不错,但我现在在想,Python真的是构建网页应用的合适语言吗?我过去参与的网页应用大多是用C/C++做的CGI,然后是PHP。我发现PHP更容易使用,因为它让用户界面和后端的连接变得简单多了,而且对我来说更有逻辑。
我之前没用过Python,但我想知道在Python中做CGI编程有多简单?我是否需要回到那种繁琐的C/C++方式,需要把HTML代码存储在模板中,然后让CGI读取这些模板,并用合适的值替换特殊代码,还是说可以像PHP那样直接把模板当作代码来用?
我可能在问一个非常无知的问题,抱歉,不过希望有人能明白我想表达的意思!我总体想问的是:用Python写网页应用是个好主意吗?它的难度和PHP相比如何?
4 个回答
我建议你使用Django,不过既然你提到想要一个"和PHP一样简单"的东西,那你可以看看PSP(Python Server Pages)。Django是一个完整的网站开发框架,而PSP可以像PHP一样使用,不需要任何框架。
Python是个不错的选择。
不过,我建议你不要使用CGI模型,因为每次请求都要启动解释器,这样会让你付出很大的代价。大多数Python的网页框架都支持WSGI标准,可以通过多种方式与服务器连接,但大多数框架都是在某种长时间运行的进程中,网页服务器通过代理、FastCGI、SCGI等方式与它们沟通。
说到框架,Python的框架种类繁多。这既是好事也是坏事。虽然有很多不错的选择,但对于新手来说可能会感到有些不知所措。
如果你想要一个已经打包好,包含网页、数据库和模板集成的解决方案,我建议你看看Django、TurboGears或Pylons。如果你想对各个组件有更多的控制,可以考虑CherryPy、Colubrid或web.py。
至于它是否和PHP一样“简单”,这就见仁见智了。在Python的网页编程中,通常建议将模板和应用逻辑分开,这样可以让你的生活更轻松。另一方面,能够在一个PHP文件中写完一个页面的所有代码,这也是另一种“简单”的定义。
祝你好运。
“用Python编写CGI程序有多简单?” 当然比C简单。Python更简单的原因就是——简单来说——它是一种更容易使用的语言。首先,最重要的一点是:没有内存分配和释放的问题。除此之外,面向对象的编程模型也非常优秀。
除了语言本身简单之外,Python的WSGI标准比CGI标准要容易得多。
不过,原始的CGI编程相比于完全使用Python框架的简化世界(比如TurboGears、CherryPy、Django等)来说,确实是个大麻烦。
这些框架提供了很多(必要的)结构。对于CGI程序员来说,刚开始接触时会觉得要学的东西太多了。这是事实,所有新事物刚开始都觉得难。但是,所获得的价值远远超过了投入的时间和精力。
使用Django,你可以在几分钟内就开始运行。真的。只需输入django-admin.py startproject
,你就能几乎立即运行一个项目。你确实需要设计你的网址、编写视图函数和设计页面模板。这些都是工作,但比起用C写CGI来说,工作量更少。
Django的架构比PHP更好,因为展示模板和处理逻辑是完全分开的。这在你想在Django框架中使用自由且不受限制的PHP风格时,可能会导致一些困惑(见在Django模板中放入Python代码时总是出现语法错误)。
将用户界面与后端连接起来
Python前端(比如Django)使用Python视图函数。这些视图函数可以包含任何Python代码。如果需要的话,还可以调用用C写的模块。
这意味着你可以编译一个具有Python友好接口的CLIPS模块。这样就可以通过import
语句在你的Python代码中使用它。
不过,有时候这样做效果不佳,因为你的Django页面在等待CLIPS引擎完成。另一种选择是使用命名管道。
你有一个完全用C写的基于CLIPS的应用程序,它从命名管道中读取数据。而你的Django应用程序则是完全用Python写的,它向这个命名管道写入数据。由于你有两个独立的进程,这样做会很快让你的所有核心都忙碌起来。