首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python中不同web编程方法的优缺点

Python中不同web编程方法的优缺点
EN

Stack Overflow用户
提问于 2008-09-04 13:00:13
回答 9查看 5.4K关注 0票数 25

我想使用Python编写一些服务器端脚本。但我对这么多的方法感到迷茫。

它从自己动手的CGI方法开始,最后似乎是一些非常健壮的框架,基本上可以自己完成所有的工作。中间还有很多东西,比如web.py吡咯姜戈

  • 您所研究的框架或方法的、利弊、缺点是什么?
  • 有什么取舍?
  • 对于,什么样的项目做得好,哪些项目没有?

编辑:我还没有多少网络编程的经验。

我想避免一些基本的和繁琐的事情,比如解析参数的URL等等。

另一方面,虽然15分钟内创建的博客Ruby on Rails的视频给我留下了深刻的印象,但我意识到有数以百计的东西隐藏在我面前--如果你需要在短时间内写一个工作的webapp,这是很酷的,但对于真正理解魔法来说并不是那么好--这就是我现在想要的。

EN

回答 9

Stack Overflow用户

发布于 2008-09-04 13:35:45

CGI对于低流量的网站来说是很棒的,但是对于其他的网站,它也有一些性能问题。这是因为每次请求传入时,服务器都会在自己的进程中启动CGI应用程序。这有两个原因: 1)启动和停止进程需要时间;2)不能在内存中缓存任何东西。您可以使用FastCGI,但我认为,如果要使用这种方式,最好只编写一个直接的WSGI应用程序( WSGI的工作方式与CGI并没有太大的不同)。

除此之外,您的选择在很大程度上取决于您希望框架做多少。你可以跟着一个全唱的,所有的舞蹈框架,像姜戈或塔。或者您可以使用混合匹配方法(使用CherryPy作为HTTP,SQLAlchemy用于数据库内容,粘贴用于部署,等等)。我还应该指出,大多数框架也允许您为其他框架切换不同的组件,因此这两种方法不一定是相互排斥的。

就我个人而言,我不喜欢对我有太多魔力的框架,更喜欢混合和匹配技术,但我被告知我也完全疯了。:)

你有多少网络编程经验?如果你是初学者,我建议你和Django一起去。如果你更有经验的话,我建议你在找到合适的方法和技巧之前,先尝试一下不同的方法和技巧。

票数 17
EN

Stack Overflow用户

发布于 2008-09-04 14:11:54

最简单的web程序是CGI脚本,它基本上只是一个程序,其标准输出被重定向到提出请求的web浏览器。在这种方法中,每个页面都有自己的可执行文件,必须在每个请求上加载和解析该文件。这使得建立和运行一些东西变得非常简单,但是在性能和组织方面都很糟糕。因此,当我需要一个非常动态的页面,它不会发展成一个更大的系统时,我会使用一个CGI脚本。

这之后的一个步骤是将Python代码嵌入到HTML代码中,比如使用PSP。我认为现在没有多少人使用它,因为现代的模板系统已经使它变得非常过时。我与PSP一起工作了一段时间,发现它与CGI脚本(每个页面都有自己的文件)有着基本相同的组织限制,并且尝试将空白无知的HTML与对空格敏感的Python混合在一起,还带来了一些与空白相关的烦恼。

下一步是非常简单的web框架,比如我也使用过的web.py。与CGI脚本一样,启动和运行一些东西非常简单,您不需要任何复杂的配置或自动生成的代码。您自己的代码将非常容易理解,因此您可以看到正在发生的事情。然而,它并不像其他web框架那样丰富;上次我使用它时,没有会话跟踪,所以我不得不使用自己的。它还有“太多的魔法行为”引用Guido ("upvars(),bah")。

最后,您有功能丰富的web框架,如Django。这些都需要一些工作才能让Hello程序简单地工作,但是每个主要的程序都有一个很棒的、写得很好的教程(特别是Django)来指导您完成它。我强烈建议在任何实际项目中使用这些web框架之一,因为它的方便性、特性和文档等等。

最终你得决定你喜欢什么。例如,框架都使用模板语言(特殊代码/标记)来生成HTML文件。其中一些模板,如Cheetah模板,允许您编写任意Python代码,以便您可以在模板中执行任何操作。其他模板,如Django模板,则限制性更强,迫使您将表示代码与程序逻辑分开。这都是你个人所喜欢的。

另一个例子是URL处理;一些框架,如Django,让您通过正则表达式在应用程序中定义URL。其他如CherryPy等则通过函数名自动将您的函数映射到urls。同样,这也是个人偏好。

我个人使用CherryPy作为web服务器(表单参数、会话处理、url映射等)和Django (对象-关系映射和模板)的混合web框架。我的建议是从一个高层次的网络框架开始,通过它的教程,然后开始一个小的个人项目。我已经用我提到的所有技术做了这件事,这是非常有益的。最终,你会感觉到你喜欢什么,并在这个过程中成为一个更好的网络程序员(和一个更好的程序员)。

票数 12
EN

Stack Overflow用户

发布于 2008-09-04 13:24:55

如果您决定使用一个基于WSGI的框架(例如TurboGears),我建议您阅读Ian的优秀文章另一个自己动手的框架

在本文中,他从零开始构建了一个简单的web应用程序框架。

另外,请看凯文·丹戈尔的视频使用WSGI创建web框架。Dangoor是TurboGears项目的创始人。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档