【问题标题】:Python web programming with standard library使用标准库进行 Python Web 编程
【发布时间】:2010-10-08 19:38:38
【问题描述】:

我想编写一个简单的 python web 应用程序来为命令行程序提供一个 gui(例如hg serve)。它只会在本地运行。我不希望它有任何外部依赖项以便于部署,所以python web programming 通常不会在这里应用

如何以最小的麻烦完成它?任何指针如何使用cgiwsgistring.Templatestring.Formatter 轻松完成?我更喜欢 Python 2.6 解决方案,但即使是 Python 3.x 也可以。我也更喜欢使用一些 html 模板来手动组合 html。

更新: 理想的解决方案将包括方法

  • 处理表单
  • 上传/下载文件
  • 输出html
  • 启动网络服务器

【问题讨论】:

  • “simple python web application”和“我不希望它有任何外部依赖”是完全不兼容的。事实上,它们截然相反。你不能两者兼得。哪个更重要?简单还是没有依赖?你只能选择一个。
  • @S.Lott - 正如 Steven 在他的回答中指出的那样,使用微框架可以使这项任务变得容易,同时只添加一个小的依赖项(在 Bottle 的情况下是单个文件)。这种方法似乎在两个“截然相反”之间取得了很好的平衡。
  • @Adam Schmideg:添加依赖显然违反了“我不希望它有任何外部依赖”。这不是一个“中间地带”。这是一个非常明智和合乎逻辑的解决方案。强烈推荐。但它绝对不是“中间地带”。它绝对完全违反了“我不希望它有任何外部依赖”。我确实赞成这个答案。但是,问题本身写得非常糟糕,以至于问题完全阻止了所有个答案。
  • @S.Lott - 当我写这个问题时,我认为它是黑白的,要么完全没有依赖关系,要么依赖于一个巨大的库。我现在可以看到它更细粒度。抱歉,如果我写得不好使您无法回答。幸运的是,我得到了一个有用的答案,史蒂文可以从言语中感受到我的意图。
  • @S.Lott - 你会如何改进我的问题?

标签: python cgi standard-library


【解决方案1】:

标准库中的wsgiref 包有一个简单的服务器来服务于wsgi 应用程序。您可以使用它来运行您自己的无框架 wsgi 应用程序,一个最小的 wsgi 应用程序并不难(参见 wsgiref 文档页面末尾的 hello world 示例)

您可能希望稍微放宽“标准库”的要求。无论如何,您将在自己的模块上拥有“依赖关系”,使用其他人已经完成工作的东西真的那么糟糕吗?一些所谓的“微框架”对于部署来说应该不是太大的问题。 Bottle 例如,作为单个文件模块出现,除了 stdlib 之外没有其他依赖项(我自己还没有使用过 Bottle,但我选择那个作为示例主要是因为单个文件/没有依赖项)

【讨论】:

  • +1 你让我重新考虑我最初的要求。感谢微框架指针。瓶子看起来很有趣。
  • 我当然可以推荐 Bottle。我一直在将它用于问题中描述的场景。
【解决方案2】:

您是否正在寻找类似 SimpleHTTPServer 的东西? http://docs.python.org/library/simplehttpserver.html#module-SimpleHTTPServer

【讨论】:

  • 嗯,这是我正在寻找的内容的一部分,请查看我的问题的更新。
【解决方案3】:

也许twisted 是要走的路?还是您认为这过于依赖外部?

【讨论】:

  • 有几十个很棒的python web框架,我知道。这个问题是关于不使用它们中的任何一个,包括扭曲的。
猜你喜欢
  • 1970-01-01
  • 2015-03-24
  • 2018-03-23
  • 2015-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
相关资源
最近更新 更多