我想在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服务器”应用程序。 我没有最后的“哪个框架是最好的”答案,但我确实有一些见解:
我没有直接的经验,但我听说过一些有关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是庞大而复杂的,但这个解决方案是独立的,而且运行简单:
就是这样。 将其部署到其他机器也很容易,特别是像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和你一样轻巧。 🙂