19

我计划将 PHP 应用程序移植到 Python。该应用程序主要是关于数据收集和处理。主应用程序作为独立的命令行应用程序运行。该应用程序有一个 Web 界面,基本上是一个非常轻量级的报告界面。

我没有在 PHP 版本中使用框架,但是作为 Python 的新手,我想知道使用 Django 之类的东西是否有利,或者至少使用 Genshi。需要注意的是,我不希望我的应用程序分发被我需要与应用程序一起分发的框架部分所淹没。

在这种情况下,仅在 Python 中使用 cgi 导入是最好的方法吗?我倾向于认为框架开销太大,但也许我并没有以非常“python”的方式思考它们。在这种情况下,您有什么建议?

4

8 回答 8

15

命令行 Python,IMO,绝对是第一位的。让它发挥作用,因为这是你正在做的事情的核心。

问题是从命令行应用程序使用 Web 框架的 ORM 并不明显。Django 提供了从命令行应用程序使用 ORM 的具体说明。起初这些很烦人,但我认为从长远来看它们是救生员。我大量使用它来上传大量客户提供的文件。

不要使用裸 CGI。这不是不可能的,但是太多的事情可能会出错,而且它们都已经被框架解决了。为什么要重新发明一些东西?只需使用别人的代码。

框架涉及学习,但没有真正的“开销”。他们并不慢。它们是您不必编写或调试的代码。

  1. 学习一些 Python。

  2. Django教程。

  3. 开始构建 Web 应用程序。

    一种。启动一个 Django 项目。在该项目中构建一个小型应用程序。

    湾。使用 Django ORM 构建新模型。为模型创建一个 Django 单元测试。确保它有效。您将能够使用默认的管理页面并进行大量操作。只是还没有建立整个网站。

  4. 让您的命令行应用程序使用 Django ORM 工作。本质上,您必须对设置文件进行微调才能使该应用程序正常工作。请参阅设置/配置部分。

  5. 一旦你的命令行和默认管理员运行,你就可以完成网络应用程序。

这是框架的黄金法则: 它是您不必编写、调试或维护的代码。 使用它们。

于 2008-09-25T21:14:33.413 回答
11

您可能会考虑使用web.py之类的东西,它易于分发(因为它很小),并且您的其他工具也很容易适应它,因为它不需要您像 Django 那样提交到框架。 .

但是请注意,它不是 Python 社区中最受喜爱的框架,但它可能正是适合你的东西。您也可以查看web2py,但我对此知之甚少。

于 2008-09-25T23:17:24.930 回答
4

取决于项目的大小。如果您以前只有几个调用独立应用程序的 php 脚本,那么我可能会选择 cgi-app。

如果您使用数据库、url 重写、模板、用户管理等,那么使用框架是一个好主意。

当然,在移植之前,请考虑是否值得仅仅切换语言,或者是否需要特定的 Python 功能。

祝你好运!

于 2008-09-25T21:07:44.507 回答
3

我最近使用web.py将 PHP 应用程序移植到 Python 。随着框架的发展,它非常轻量级,依赖最少,而且它往往不会妨碍您,因此它可能是您正在寻找的折衷方案。

不过,这一切都取决于您的初始应用程序,因为对于大型应用程序,拥有一个功能齐全的框架来处理管道的优势往往超过了必须拖拽所有框架代码所涉及的劣势。

于 2008-09-25T21:22:30.477 回答
2

Django 使快速创建网站成为可能,这是肯定的。你不需要成为 Python 大师就可以使用它,而且由于它的设计非常 Pythonic,并且没有真正的“魔法”,它将帮助你一路学习 Python。

从示例开始,查看来自 TwiD 的一些 django 截屏视频,您就可以开始了。

慢慢开始,调整管理员,并通过 shell 使用它是开始的方式。一旦你掌握了 ORM 并了解了事情是如何工作的,就开始构建真正的东西!

该框架不会引起任何性能问题,就像 S. Lott 所说的那样,它是您不必维护的代码,这是最好的一种。

于 2008-09-25T22:47:33.830 回答
2

去找一个框架。如果您不使用会话处理之类的基本内容,那将是一场噩梦,因为 Python 不像 PHP 那样专门用于网络。

如果你觉得 django 太多了,你可以尝试一个更轻的,比如很小但仍然很方便的 web.py。

于 2008-09-26T11:31:45.990 回答
2

为了皮特的爱,使用框架!从字面上看,那里有几十个框架,从cherrypy到django到albatross到......嗯......你的名字。事实上,当人们抱怨 Rails 的流行时,大量的 Web 框架就是他们所指的。

Python Web 开发社区四分五裂,没有一个声音。但这完全是另一个话题!关键是,有一些“网络工具包”(例如 albatross)相当轻巧但功能强大,足以让您度过一天(例如,自动验证机器人没有做简单的表单提交假,或帮助保持 MVC 清洁)。

如果你想要一些不是“太多框架”的东西,请看这里:

http://wiki.python.org/moin/WebFrameworks

查看“提供模板的基本框架”。它们都很轻巧,可以做所有“不要重新发明轮子”的东西,而不会强迫你使用 Mac 卡车。

于 2009-09-17T02:47:39.630 回答
0

这取决于您要分发应用程序的方式。
如果它只在内部使用,请选择 django。和它一起工作很愉快。但是,django 在分发任务方面确实做得不够。django-applications 设置起来很痛苦。

于 2008-09-25T21:11:08.523 回答