【问题标题】:Program web applications in python without a framework?在没有框架的情况下用 python 编写 Web 应用程序?
【发布时间】:2011-01-17 13:46:48
【问题描述】:

我刚刚开始使用 Python,我想知道如何在不需要框架的情况下编写 Web 应用程序。我是一位经验丰富的 PHP 开发人员,但我有尝试 Python 的冲动,而且我通常喜欢从头开始编写,不受诸如烧瓶或 django 等框架的限制。

【问题讨论】:

  • “框架的限制”。为什么说框架是限制? PHP 是一个庞大而复杂的框架,可让您免于编写大量繁琐的代码。为什么要放弃那个级别的权力? PHP 可以的框架有什么问题,但另一个非 PHP 框架不行?
  • PHP 并不是一个真正的框架,它是一种解释性语言,但不是一个框架。对我来说,大多数时候框架是一种限制,因为我必须按照框架告诉我必须做的事情去做。例如,在 CakePHP 中,您必须为控制器、视图和模型命名一个特定的名称,您不必这样做,但如果您不这样做,那么事情就不会“神奇地”链接在一起,那么有什么意义呢?使用框架?框架充满了我不需要让它们变慢的功能。我更喜欢自己写东西(我保留了我所有代码的库),我就是这样的怪胎:D
  • @Dr Hydralisk:PHP 可以独立运行。但是,当嵌入 Apache 时,它​​绝对是一个框架。尝试“从头开始”编写您自己的 mod_php 版本,并查看 PHP 自动为您做的所有事情。使用框架的意义在于它可以让您从细节中解脱出来。 PHP 将您从众多 HTTP 处理细节中解放出来。许多 Python 框架让您从细节中解脱出来。框架“充满了功能”?真的吗?您能否更新您的问题以明确指出您不喜欢的功能?
  • 我不需要的功能。我喜欢从头开始做东西,我不介意写所有这些,让项目更有趣(让它感觉像一个比我想象的更大的项目),我为配置而活。

标签: python


【解决方案1】:

WSGI 是用于 Web 服务器接口的 Python 标准。如果您想创建自己的框架或在没有框架的情况下进行操作,您应该研究一下。具体来说,我发现 Ian Bicking's DIY Framework 文章很有帮助。

顺便说一句,我倾向于认为框架很有用,并且我个人使用 Django,就像 Pylons 的工作方式一样,并且过去曾使用 Bottle 进行原型设计——如果你想留下来,你可能想看看 Bottle——不常见的微框架。

【讨论】:

  • 谢谢,我会调查的。人们在这里回复的速度非常快,我喜欢这个地方:D
【解决方案2】:

最轻量级的框架之一是mod_wsgi。任何更少的工作都将是解析 HTTP 请求以查找标头和 URI 和方法以及解析 GET 或 POST 查询/数据关联、处理文件上传、cookie 等的大量工作。

事实上,mod_wsgi 只会处理请求解析和构建结果的基础知识。

会话、cookie、为您的响应页面使用模板生成器将是一项令人惊讶的工作。

一旦您开始走这条路,您可能会发现一点框架支持会大有帮助。

【讨论】:

  • 嗯,mod_wsgi 在技术上不是一个框架,它是一个 WSGI 适配器。它甚至没有像 Apache 那样处理 HTTP 请求解析。
  • @Graham Dumpleton:“技术上是一个框架”?技术定义是什么?
  • @Dr Hydralisk 如果你想制作一个 python web 框架,那没关系。但是如果你想做一个可以服务市场的功能性网站,那么我会说“不使用框架”是大量无用的工作和重新发明轮子。如果你喜欢挑战,那就接受有意义的挑战。
【解决方案3】:

您将不得不研究 CGI 或 FastCGI 之类的东西,它们提供了与网络服务器通信的 API。

Google App Engine 使您能够编写简单的应用程序,甚至提供本地网络服务器供您试用。

【讨论】:

  • 我认为 App Engine 是一个很好的建议。 webapp 框架非常小,它在商品托管上的启动和运行就像普通的旧 PHP 一样容易。
  • 我正在研究 App Engine,看起来很有趣。
【解决方案4】:

对于 PHP 程序员,我认为mod_python 是一个无需任何框架即可入门的好方法。它可以直接用作 Apache 2 模块。您可以有代码标签(如 PHP 中的 <? ?>)甚至有条件的 HTML 输出(if 语句中的 HTML):

<%
if x == y:
   # begin
%>

  ... some html ...

<%
# end
%>

(取自 onlamp.comPython Server Pages tutorial 的简化示例)

【讨论】:

  • 看起来不错,但我也反apache..Nginx有什么用吗?
  • 好像有一个用于nginx的wsgi模块:wiki.nginx.org/NginxNgxWSGIModule
  • 为什么说你是反apache的?只是想知道原因。
【解决方案5】:

您应该尝试 web.py,它提供了最起码的功能,不会妨碍您。

http://webpy.org/

【讨论】:

    【解决方案6】:

    这里的人们喜欢框架。我注意到的一个缺点是 Python 缺少一个方便的 Sessions 模块作为内置库,尽管它在 PHP 中可用并且在 Perl 中作为 CGI::Session 可用。

    你最终会做:

    import cgi  # if you want to work with forms and such
    import cgitb; cgitb.enable()  # to barf up errors to the web
    print 'Content-type: text/html\n\n'  # to start off any HTML.
    

    您必须自己编写会话内容。

    【讨论】:

    • 我想我不会将 Python 用于 Web 开发,我只会将它用作通用编程语言。我会回到 PHP,也许再试一次 Rails(我知道它是一个框架……它是我唯一真正喜欢的框架,只是 Ruby 语法太烦人了)。
    猜你喜欢
    • 2019-07-30
    • 1970-01-01
    • 2018-12-16
    • 2015-08-25
    • 2017-07-16
    • 2020-09-20
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多