我想用Python做一些服务器端脚本.但是我有很多方法可以做到这一点.
它从自己动手的CGI方法开始,似乎以一些非常强大的框架结束,这些框架基本上可以完成所有工作.还有很多东西,比如web.py,Pyroxide和Django.
哪些优点和缺点的框架或方法的你参与的?
有什么权衡取舍?
对于什么样的项目,他们做得好,不做什么?
编辑:我还没有太多的网络编程经验.
我想避免解析参数URL等基本和繁琐的事情.
另一方面,虽然使用Ruby on Rails 在15分钟内创建的博客视频给我留下了深刻印象,但我意识到隐藏了数百个东西来自我 - 如果你需要立即编写一个有效的网络应用程序,这很酷,但对于真正了解魔术并不是那么好 - 这就是我现在所寻求的.
CGI非常适合低流量网站,但它在其他任何方面都存在一些性能问题.这是因为每次请求进入时,服务器都会在自己的进程中启动CGI应用程序.这有两个原因:1)启动和停止进程可能需要一些时间; 2)您无法在内存中缓存任何内容.你可以选择FastCGI,但我认为如果你要走这条路,你最好只编写一个直接的WSGI应用程序(WSGI的工作方式与CGI有很大不同) ).
除此之外,您的选择大部分是您希望框架执行的程度.你可以选择唱歌,所有舞蹈框架,如Django或Pylons.或者你可以采用混合和匹配的方法(使用类似于CherryPy的HTTP内容,SQLAlchemy用于数据库内容,粘贴用于部署等).我还应该指出,大多数框架还允许您为其他框架切换不同的组件,因此这两种方法不一定是互斥的.
就个人而言,我不喜欢那些对我来说太神奇的框架,而不喜欢混合搭配技术,但我被告知我也完全疯了.:)
你有多少网络编程经验?如果你是初学者,我会说与Django一起去.如果你有更多的经验,我会说你可以尝试不同的方法和技巧,直到你找到合适的方法和技巧.
最简单的Web程序是一个CGI脚本,它基本上只是一个程序,其标准输出被重定向到发出请求的Web浏览器.在这种方法中,每个页面都有自己的可执行文件,必须在每个请求中加载和解析.这使得启动和运行起来非常简单,但在性能和组织方面都有严重的扩展.因此,当我非常快速地需要一个非常动态的页面时,我将使用CGI脚本.
与此相关的一步是将Python代码嵌入到HTML代码中,例如使用PSP.我认为现在很多人都不会使用它,因为现代模板系统已经过时了.我与PSP合作了一段时间,发现它与CGI脚本(每个页面都有自己的文件)基本上具有相同的组织限制,加上一些与空白相关的烦恼,试图将空白无关的HTML与空格敏感的Python混合在一起.
下一步是非常简单的web框架,例如web.py,我也使用过它.与CGI脚本一样,启动和运行起来非常简单,并且您不需要任何复杂的配置或自动生成的代码.您自己的代码将非常易于理解,因此您可以看到正在发生的事情.但是,它不像其他Web框架那样功能丰富; 上次我使用它时,没有会话跟踪,所以我不得不自己滚动.引用Guido("upvars(),bah")也有"太多魔术行为".
最后,您拥有功能丰富的Web框架,例如Django.这些将需要一些工作来使简单的Hello World程序正常工作,但每个主要的程序都有一个很好的,写得很好的教程(特别是Django)来引导你完成它.我强烈建议使用其中一个Web框架用于任何实际项目,因为它的便利性,功能和文档等.
最终你必须决定你喜欢什么.例如,框架都使用模板语言(特殊代码/标签)来生成HTML文件.其中一些如Cheetah模板允许您编写任意Python代码,以便您可以在模板中执行任何操作.其他如Django模板更具限制性,迫使您将表示代码与程序逻辑分开.这完全取决于你个人喜欢什么.
另一个例子是URL处理; 一些框架,如Django,您可以通过正则表达式在应用程序中定义URL.其他如CherryPy会根据您的函数名称自动将您的函数映射到URL.同样,这是个人偏好.
我个人使用混合的Web框架,使用CherryPy作为我的Web服务器(表单参数,会话处理,url映射等)和Django作为我的对象关系映射和模板.我的建议是从一个高级Web框架开始,按照其教程开始工作,然后开始一个小型的个人项目.我用我提到的所有技术做到了这一点,这真的很有用.最终,您将感受到自己喜欢的内容,并在此过程中成为更好的Web程序员(以及更好的程序员).
如果您决定使用基于WSGI的框架(例如TurboGears),我建议您阅读Ian Bicking撰写的优秀文章Another Do-It-Yourself Framework.
在文章中,他从头开始构建一个简单的Web应用程序框架.
另外,请查看Kevin Dangoor 创建的带WSGI的Web框架视频.Dangoor是TurboGears项目的创始人.