Python Web开发 - 有或没有框架[关闭]
Posted
技术标签:
【中文标题】Python Web开发 - 有或没有框架[关闭]【英文标题】:Python web development - with or without a framework [closed] 【发布时间】:2010-09-13 06:12:40 【问题描述】:我计划将 php 应用程序移植到 Python。该应用程序主要是关于数据收集和处理。主应用程序作为独立的命令行应用程序运行。该应用程序有一个 Web 界面,基本上是一个非常轻量级的报告界面。
我没有在 PHP 版本中使用框架,但作为 Python 新手,我想知道使用 Django 或至少 Genshi 之类的东西是否有利。需要注意的是,我不希望我的应用程序分发被我需要与应用程序一起分发的框架部分所淹没。
在这种情况下,仅使用 Python 中的 cgi 导入是最好的方法吗?我倾向于认为框架开销太大,但也许我并没有以非常“python”的方式思考它们。在这种情况下您有什么建议?
【问题讨论】:
作为后续行动,我最终成为了 Tornado 的忠实粉丝。它对男性来说已经足够松散了,我发现它非常牢固。 女性更喜欢强耦合框架吗? :D 【参考方案1】:命令行 Python,IMO,绝对是第一位的。让它发挥作用,因为这是您所做工作的核心。
问题在于,从命令行应用程序中使用 Web 框架的 ORM 并不明显。 Django 提供了从命令行应用程序使用 ORM 的具体说明。起初这些很烦人,但我认为从长远来看它们是救生员。我大量使用它来上传大量客户提供的文件。
不要使用纯 CGI。这不是不可能的,但是太多的事情可能会出错,而且它们都已经被框架解决了。为什么要重新发明一些东西?用别人的代码就好了。
框架涉及学习,但没有真正的“开销”。他们并不慢。它们是您不必编写或调试的代码。
学习一些 Python。
学习Django 教程。
开始构建网络应用。
一个。启动一个 Django 项目。在该项目中构建一个小型应用程序。
b.使用 Django ORM 构建新模型。为模型创建一个 Django 单元测试。确保它有效。您将能够使用默认的管理页面并进行大量操作。只是不要构建整个网站。
让您的命令行应用程序使用 Django ORM 工作。本质上,您必须对设置文件进行微调才能使该应用程序正常工作。请参阅settings/configuration 部分。
一旦你的命令行和默认管理员运行,你就可以完成 网络应用程序。
这是框架的黄金法则:这是您不必编写、调试或维护的代码。使用它们。
【讨论】:
在发布我的应用程序时,我使用 Django 依赖项发布它,但不分发 Django,对吗?我还担心命令行应用程序中不需要的代码会使事情变得过于繁重。我会更仔细地研究 Django,谢谢。 Django 是一个 Web 应用程序框架。您将其安装在 Web 服务器上以使用它。如果您想将其捐赠给公共领域,您可以捐赠您的应用程序——仅此而已。【参考方案2】:您可能会考虑使用web.py 之类的东西,它很容易分发(因为它很小),而且您的其他工具也很容易适应它,因为它不需要您向框架提交太多内容像 Django 一样。
不过,请注意,它不是 Python 社区中最受欢迎的框架,但它可能正是您的理想之选。您也可以查看web2py,但我对此知之甚少。
【讨论】:
我不久前看到了这篇文章,它也启发了我查看 web.py。我已经写了一篇关于这个主题的博客文章,这也可能对任何想查看 web.py 或开始使用它的人有所帮助:drcoen.com/2010/11/…【参考方案3】:取决于项目的大小。如果您之前只有几个调用独立应用程序的 php 脚本,那么我可能会选择 cgi-app。
如果您对数据库、url 重写、模板、用户管理等有使用,那么使用框架是个好主意。
当然,在移植之前,请考虑是否值得仅仅切换语言,或者是否需要特定的 Python 功能。
祝你好运!
【讨论】:
感谢您的建议。您列出的大多数框架问题都不是我真正关心的领域,所以这就是我的困惑。【参考方案4】:我最近使用 web.py 将 PHP 应用程序移植到 Python。随着框架的发展,它非常轻量级,依赖最少,而且它往往不会妨碍您,因此它可能是您正在寻找的折衷方案。
不过,这一切都取决于您的初始应用程序,因为对于大型应用程序,拥有一个功能齐全的框架来处理管道的优势往往超过了必须拖拉所有框架代码所带来的劣势。
【讨论】:
【参考方案5】:Django 可以快速创建一个网站,这是肯定的。您无需成为 Python 大师即可使用它,而且由于它的设计非常 Pythonic,并且没有真正的“魔法”,它将帮助您一路学习 Python。
从示例开始,查看一些来自 TwiD 的 django 截屏视频,然后就可以开始了。
开始缓慢,调整管理员,并通过 shell 使用它是开始的方式。一旦你掌握了 ORM 并了解了事情是如何工作的,就开始构建真正的东西!
该框架不会引起任何性能问题,就像 S. Lott 所说的那样,它是您不必维护的代码,这是最好的。
【讨论】:
是的,我主要担心的是 Django 框架太多,无法满足我的需求。 90% 的应用程序位于 Web 层之外。我担心 Django 太过分了。感谢您对如何开始使用它的提示,即使不是这个项目,我也绝对想了解它。【参考方案6】:去寻找一个框架。如果你不使用会话处理之类的基本内容,那将是一场噩梦,因为 Python 不像 PHP 那样专门用于网络。
如果你觉得 django 太多了,你可以尝试一个更轻的,比如很小但仍然很方便的 web.py。
【讨论】:
【参考方案7】:为了皮特的爱,使用框架!从字面上看,那里有几十个框架,从cherrypy到django到albatross到......嗯......你的名字。事实上,当人们抱怨 Rails 的流行时,大量的 Web 框架就是他们所指的。
Python Web 开发社区四分五裂,没有一个声音。但这完全是另一个话题!关键是,有一些“网络工具包”(例如 albatross)相当轻巧但功能强大,足以让您度过一天(例如,自动验证机器人没有做简单的表单提交假,或帮助保持 MVC 清洁)。
如果你想要一些不是“太多框架”的东西,请看这里:
http://wiki.python.org/moin/WebFrameworks
查看“提供模板的基本框架”。它们都很轻巧,可以完成所有“不要重新发明***”的事情,而不会强迫您使用 Mac 卡车。
【讨论】:
【参考方案8】:这取决于您分发应用程序的方式。 如果它只在内部使用,请选择 django。和它一起工作很愉快。 但是,django 在分发任务方面确实做得不够。 django-applications 设置起来很麻烦。
【讨论】:
想要更详细一点?我自己设置了两个,我看不出有什么这么难? mod_python 规则。非常适合我。 我同意,我已经使用 mod_python 和 trac 并且很容易设置。以上是关于Python Web开发 - 有或没有框架[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JavaScript 中模拟“类”? (有或没有第三方库)[关闭]
如何在 JavaScript 中模拟“类”? (有或没有第三方库)[关闭]
是否可以在没有“任何”框架的情况下使用 python 编写 Web 应用程序? [关闭]