【问题标题】:Recommended python library/framework for local web app?为本地 Web 应用程序推荐的 python 库/框架?
【发布时间】:2011-05-31 10:13:08
【问题描述】:

我想用 Python 创建一个简单的 LOCAL Web 应用程序。

Web 服务器和“后端”代码将在与 UI 相同的系统(最初是 Windows 系统)上运行。我怀疑这很重要,但 UI 将是 Google Chrome、HTML、CSS、JavaScript 和 jQuery 的典型网络组合。

有大量基于 Python 的 Web 编程框架,但它们似乎都是为构建具有大量后端基础架构的复杂、大型应用程序而设计的。我想要相反的东西:非常简单、轻量级且易于自包含的东西——只要足够的网络服务器和框架来创建/支持本地网络应用程序。

建议?

【问题讨论】:

    标签: python windows web-applications


    【解决方案1】:

    我为此使用了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、Pyramid 和 Bottle 等框架。之前简单用过 Django,Bottle 看起来很简单。
    • 我真正希望的是能够启动浏览器和 Web 服务器,在它们之间建立基本的 AJAX IPC,并在准备发布时帮助将代码打包成可执行文件。没有发现或听说过类似的东西(即真正的“本地网络应用程序”框架),但证明很容易与 BaseHTTPServer 拼凑在一起。
    • 您好,我正在寻找您在此处描述的内容,您的努力成功了吗?如果是这样,方法是什么?
    【解决方案2】:

    一旦您进行了一些简单的配置设置,Pylons 就非常易于使用,但您必须清楚自己想要什么。

    【讨论】:

    • 是的,但你见过金字塔吗?
    【解决方案3】:

    Django 带有一个内置的 Web 服务器,允许您在本地全面测试您的应用程序(通过localhost:8080 或类似的东西)。事实上,在将其部署到服务器之前,我不止一次使用它在本地运行完整的 Web 应用程序。我认为您没有理由不能将它用于您自己的本地网络应用程序目的。尽管 Django 看起来庞大而复杂,但这个解决方案是独立的且易于运行:

    1. 安装 Django
    2. 阅读很棒的教程,很快就会向您展示如何运行网络服务器
    3. 编写您的代码

    就是这样。将它部署到其他机器上也很简单,尤其是像 virtualenv 这样的东西。

    如果您根本不想要大型网络框架,我将不得不加入 Greg 的建议以使用 BaseHTTPServer。我以前曾将它用于专门的本地应用程序,它运行良好,符合预期,仅此而已。这是一个非常灵活的解决方案,可让您在需要时构建完全自定义的东西。

    【讨论】:

      【解决方案4】:

      标准库中一个非常简单的服务器是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()
      

      【讨论】:

        【解决方案5】:

        很有可能,您需要一个用于对某些数据库表进行基本 CRUD 操作的管理界面。 那么Django是你最好的选择。

        【讨论】:

          【解决方案6】:

          任何框架都会这样做。 Django 肯定可以,但由于您想要更小的东西,我建议您使用 BFG/Pyramid,它非常轻量级、可扩展性极强、灵活且使用起来很有趣。但是还有很多其他的,如前所述,内置的 wsgiref 就像你得到的一样轻量级。 :-)

          【讨论】:

            【解决方案7】:

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

            Django vs web2py for a beginner developer

            【讨论】:

              【解决方案8】:

              Bottle 是一个非常轻量级的微框架。它以单个 .py 文件的形式出现,没有外部依赖项,支持路由、小型模板引擎并带有集成的网络服务器。它易于使用且纤薄。

              这听起来完全符合您的要求 :)

              【讨论】:

              【解决方案9】:

              我认为web2py 可能是一个很好的解决方案。它不需要安装,也没有依赖项(它甚至带有自己的 Python 解释器以及 Web 服务器和 SQLite 数据库)。甚至可以distribute your application as a Windows or Mac binary(包括web2py),用户无需安装即可轻松本地运行。

              【讨论】:

              【解决方案10】:

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

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

              【讨论】:

                猜你喜欢
                • 2012-03-31
                • 2010-10-30
                • 2010-10-17
                • 1970-01-01
                • 2012-02-08
                • 1970-01-01
                • 2011-03-23
                • 2010-09-13
                相关资源
                最近更新 更多