推荐本地Web应用程序的Python库/框架?

我想在Python中创build一个简单的本地Web应用程序。

Web服务器和“后端”代码将在与UI相同的系统(最初是Windows系统)上运行。 我怀疑这个问题,但用户界面将成为Google Chrome,HTML,CSS,JavaScript和jQuery的典型networking组合。

有一个基于Python的Web编程框架的TON,但它们似乎都devise用于构build复杂的,大规模的应用程序与大量的后端基础设施。 我想要的是相反的:一些非常简单,轻量级且容易自包含的东西 – 只要足够的Web服务器和框架来创build/支持本地的Web应用程序。

build议?

我认为web2py可能是一个geat解决方案在这里。 它不需要安装,也没有依赖关系(它甚至带有自己的Python解释器,以及Web服务器和SQLite数据库)。 您甚至可以将您的应用程序作为Windows或Mac二进制文件 (包括web2py) 分发 ,用户可以轻松地在本地运行,而无需安装。

瓶子是一个非常轻量级的微型框架。 它来自一个没有外部依赖的.py文件,支持路由,一个小模板引擎,并带有一个集成的web服务器。 它很容易使用和苗条。

这听起来像是一个完美匹配你的要求:)

自从我问这个问题以来,我已经写了一些这样的“本地Web服务器”应用程序。 我没有最后的“哪个框架是最好的”答案,但我确实有一些见解:

  1. 简单的或微观的框架确实是一个不错的选择。
  2. 我试过CherryPy和Flask框架。 Flask是简单明了的赢家,基本的“设置一些AJAX服务页面”的功能完全是在Flask中写的。 CherryPy文档通常是不透明的,其设置复杂度要高得多。
  3. 我很高兴与烧瓶,但我继续环顾四周。 我特别想尝试Bottle,我已经看过非常高的评论,包括在其他StackOverflow讨论和这个并排的比较: http: //www.slideshare.net/r1chardj0n3s/web-microframework-battle web2py也看起来值得一试。

我没有直接的经验,但我听说过一些有关web2py的好消息:

Django vs web2py初学者开发者

一旦你设置了一些简单的配置,塔架是非常容易使用的,但你必须有一个你想要什么的好主意。

为此,我使用了BaseHTTPserver 。 这是一个嵌入到Python标准库中的Web服务器,可以让您完全控制您提供的内容。

由于它是Python标准库的一部分,因此您不必担心任何平台特定的配置。 我已经在Windows,Linux和Mac OS X系统上使用了相同的本地服务器脚本,无需修改。

代码示例可能是:

 import BaseHTTPserver class Handler(BaseHTTPserver.BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() self.wfile.write("Hello world!") server_address = ('', 8080) httpd = BaseHTTPserver.HTTPserver(server_address, Handler) httpd.serve_forever() 

Django带有一个内置的web服务器,可以让你在本地完全测试你的应用程序(通过localhost:8080或者其他的东西)。 事实上,我已经使用它多次在本地运行一个完整的Web应用程序,然后将其部署到服务器。 我看不出有什么理由不能将它用于您自己的本地网络应用程序目的。 虽然看起来Django是庞大而复杂的,但这个解决方案是独立的,而且运行简单:

  1. 安装Django
  2. 通过伟大的教程,很快就会告诉你如何运行网络服务器
  3. 写你的代码

就是这样。 将其部署到其他机器也很容易,特别是像virtualenv这样的东西。

如果你根本不需要一个大型的网络框架,那么我将不得不加入Greg的建议来使用BaseHTTPserver 。 我之前使用过它来进行专门的本地应用程序,它运行良好,按照期望从中得到,而不是更多。 这是一个非常灵活的解决方案,可以让你在需要的时候构建一些相当自定义的东西

标准库中一个非常简单的服务器是wsgiref.simple_server

这个例子看起来微不足道( demo_app也是模块的一部分):

 from wsgiref.simple_server import make_server, demo_app httpd = make_server('', 8000, demo_app) print("Serving HTTP on port 8000...") # Respond to requests until process is killed httpd.serve_forever() 

机会是,你需要一个管理界面在一些数据库表上进行基本的CRUD操作。 那么Django是你最好的选择。

任何框架都会这样做。 Django肯定会这样做,但是因为你想要更小的东西,所以我建议使用BFG / Pyramid,它非常轻量级,可扩展性强,使用起来更加灵活和有趣。 但是也有很多其他的东西,正如前面提到的,内置的wsgiref和你一样轻巧。 🙂