Python Web开发-有无框架
我正计划将PHP应用程序移植到Python。该应用程序主要涉及数据收集和处理。主应用程序作为独立的命令行应用程序运行。该应用程序有一个Web界面,它基本上是一个非常轻便的报告界面。
我没有在PHP版本中使用框架,但是对于Python来说是新手,我想知道使用Django之类的东西或者至少使用Genshi是否有利。需要说明的是,我不希望我的应用程序分发被我需要随应用程序一起分发的框架部分所淹没。
在这种情况下,仅使用Python中的cgi导入是最好的方法吗?我倾向于认为框架开销太大,但也许我不是以非常" python"的方式考虑它们。在这种情况下,我们有什么建议?
解决方案
取决于项目的大小。如果以前只有少数php脚本调用了独立应用程序,那么我可能会选择cgi-app。
如果我们已使用数据库,URL重写,模板化,用户管理等,那么使用框架是个好主意。
当然,在移植之前,请考虑是否值得仅切换语言或者是否需要特定的Python功能。
祝你好运!
这取决于我们分发应用程序的方式。
如果仅在内部使用,请使用django。和它一起工作真是一件快乐的事。
但是,django确实无法完成分发任务。 django应用程序很难安装。
命令行Python IMO绝对是第一位。让它开始工作,因为那是我们正在做的事情的核心。
问题在于从命令行应用程序使用Web框架的ORM并不明显。 Django提供了从命令行应用程序使用其ORM的特定说明。乍一看,这些很烦人,但从长远来看,我认为它们可以挽救生命。我大量使用它来大量上传客户提供的文件。
不要使用裸露的CGI。这并非不可能,但是有太多事情可能出错,并且框架已经解决了所有这些问题。为什么要重新发明一些东西?只需使用别人的代码即可。
框架涉及学习,但没有真正的"开销"。他们并不慢。它们是我们无需编写或者调试的代码。
- 学习一些Python。
- 进行Django教程。
- 开始构建Web应用程序。一种。启动一个Django项目。在该项目中构建一个小型应用程序。 b。使用Django ORM构建新模型。为模型创建Django单元测试。确保它有效。我们将能够使用默认的管理页面并进行大量操作。只是不要构建整个网站。
- 使命令行应用程序可以使用Django ORM正常工作。本质上,我们必须精简设置文件才能使该应用程序正常运行。请参阅设置/配置部分。
- 命令行和默认管理员运行后,就可以完成Web应用程序。
这是框架的黄金法则:我们不必编写,调试或者维护代码。使用它们。
我最近使用web.py将一个PHP应用程序移植到了Python。随着框架的发展,它是轻量级的,具有最小的依赖关系,并且它倾向于远离方式,因此这可能是我们要寻找的折衷方案。
但是,这全都取决于初始应用程序,因为对于大型应用程序而言,拥有功能齐全的框架来处理管道的优点往往胜过必须拖拉所有框架代码所涉及的缺点。
可以肯定的是,Django使迅速创建一个网站成为可能。我们不需要是Python的高手就可以使用它,并且由于它在设计中非常具有pythonic的功能,并且没有真正的"魔术",因此它将学习Python。
从示例开始,查看TwiD的一些django截屏视频,我们将一路顺风。
从慢开始,调整管理员,然后通过shell玩它是开始的方法。一旦掌握了ORM并掌握了工作原理后,就可以开始构建真正的东西了!
框架不会像S. Lott所说的那样导致任何性能问题,这是我们不必维护的代码,这是最好的一种。
我们可能会考虑使用web.py之类的东西,因为它很容易分发(因为它很小),并且还很容易适应其他工具,因为它不需要我们像Django一样向框架提交信息。 。
但是请注意,它不是Python社区中最受欢迎的框架,但它可能只是我们想要的。我们可能还签出了web2py,但对此我所知甚少。
寻找一个框架。如果我们不使用会话处理,则诸如会话处理之类的基本内容将是一场噩梦,因为Python并非像PHP这样的网络专用工具。
如果我们认为django太多,可以尝试使用更轻便的工具,例如非常小巧但仍方便使用的web.py。
为了喜欢皮特,请使用框架!实际上有数十种框架,从cherrypy到django到信天翁,再到...嗯..你叫它。实际上,当人们抱怨Rails的流行时,它们指向的是大量的Web框架。
Python Web开发社区没有零散的声音。但这是另一个话题!关键是,有一些" Web工具箱"(例如信天翁)相当轻巧,但功能强大,足以使我们整日工作(例如,自动验证机器人没有进行简单的表单提交伪造或者帮助保持MVC干净) )。
如果我们想要的东西不是"太多的框架",请看这里:
http://wiki.python.org/moin/WebFrameworks
在"提供模板的基本框架"下查看。它们都是轻量级的,并且可以完成所有"不要重新发明轮子"的工作,而无需强行使用Mac卡车。