12

我不想用细节给大家带来负担,但基本上我是一名没有 Web 开发经验的 Compsci 大二学生。

基本上,我想创建一个小型“网络应用程序”,它接收来自 html 表单的输入,让 python 脚本执行一些计算,然后在浏览器中重新显示这些结果。

截至目前,我已经构建了表单和脚本。但是,当我尝试测试表单时,我的浏览器没有运行脚本,而是尝试下载它。据我了解,这是一个 cgi 脚本问题,我必须创建一个 Web 服务器来测试这个脚本。

这就是我被困住的地方。我对 Web 服务器以及如何设置它们知之甚少。最重要的是,我听说 GCI 脚本已经成为过去,并且需要大量开销才能正常运行。

这引出了我的问题。如何完成我的应用程序并测试我的 cgi 脚本?我是安装 apache 并弄乱它还是应该研究像谷歌应用引擎这样的东西?是否有其他方法可以在没有 cgi 脚本的情况下完成此任务?像 Django 这样的框架在哪里适合这个?

4

5 回答 5

13

Django,虽然很好,包罗万象,得到很好的支持,但有时对于小型 Web 应用程序来说太过分了。Django 从一开始就希望你遵守它的规则,如果你不需要它们,你必须避免使用数据库和管理面板之类的东西。使用 Django 也更容易遵循其项目布局,即使对于一个简单的应用程序来说太复杂也是如此。

所谓的微框架可能更适合您的小型应用程序。它们建立在相反的原则上:现在使用最少的功能,根据需要添加更多功能。

  • Flask基于 Werkzeug WSGI 库和 Jinja2 模板(后者是可切换的),有大量文档(带有关于 virtualenv 和 stuff的注释),非常适合小型和大型应用程序。它捆绑了一个自动重新加载的开发服务器(您的开发机器上不需要 Apache)和 Werkzeug 驱动的交互式调试器。有HTML 表单数据库 ORM 之类的扩展。

  • Bottle与微框架一样小,由 1(一个)文件组成,包括开发服务器。将其放入您的项目文件夹并开始破解。内置的 SimpleTemplate 模板引擎是可切换的,但与 Flask 相比,开发服务器更加脆弱。文档不太完整,而且,在我看来,整个事情不像 Flask 那样精致和方便。

在这两种情况下,您都在本地使用开发服务器,然后使用 WSGI(两个框架都支持的 Python Web 应用程序的服务器接口)进行部署。部署 WSGI 应用程序的方法有很多,Apachemod_wsgi是流行的方法之一。

除非一个依赖项(Bottle)优于三个(Flask、Jinja2 和 Werkzeug),否则我完全会选择 Flask。

(还有许多其他框架,所以请等待他们的用户来告诉他们。我建议避免使用web.py:它可以工作,但充满魔力,并且与 Flask 或 Bottle 相比不够优雅。)

于 2012-05-27T23:11:43.287 回答
5

快速开始使用 webapp 的一种方法是首先了解,然后修改,例如 App Engine“留言簿”示例。这样做的好处是为您完成了运行 Web 服务器和设置数据库服务器(假设您需要持久性)的许多其他必要的乏味工作。App Engine 还提供了相当灵活的开发环境。这当然不是唯一的方法,我承认在推荐它时有偏见,但它的摩擦力相当低。

GCI scripting is hardly a thing of the past, though it's not what the cool kids are doing. CGI has the benefit, and the curse, of exposing more of the raw plumbing. It forces you to understand a lot about primitive (in the low-level sense) web architecture, but it's also a bit of a large bite to chew on if you have an immediate problem to solve that can solved by simpler means.

于 2012-05-28T04:10:22.657 回答
4

如今,似乎大多数 Python Web 开发似乎都是由框架完成的。这有几个原因:

  1. 大量成熟的工具。Django 内置了用户身份验证、内置数据库管理、内置会话、几乎所有的 ORM,它可以让您无缝地支持几个数据库。

  2. 内置网络服务器。像 django 和 pylons 这样的大型 Python 框架已经内置了网络服务器。Django 有一个非常简单的网络服务器python manage.py startserver(就这么简单),这使得创建和调试应用程序变得非常容易。它是单线程的,因此将调试器放入其中是无痛的

  3. 巨大的社区。如果你有一个 django 问题,它会很快得到回答,所以社区很大。

django 教程将向您介绍开发的所有主要方面。它只有 4 页,与阅读、学习和摆弄 apache 设置相比,您将能够让您的应用程序运行起来简单得多。 https://docs.djangoproject.com/en/dev/intro/tutorial01/

尽管如果您的应用程序只是 1 个表单和一个脚本来处理它,那么现在 django 可能会有点过分。由于其无缝的测试框架,它很容易发展任何项目。我从来没有使用过烧瓶或瓶子或其他微框架,但我会记住你的项目将来会在哪里。

至于 django 适合的地方,它是一个完整的堆栈框架,包括演示(模板)、数据管理(服务器 orm)、身份验证、中间件、表单……创建一个完全包容的 Web 应用程序所需的一切。Django 和几乎所有其他 python 框架都实现了 wsgi 标准。它是一个允许网络服务器之间互操作的接口。 http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface 它非常枯燥,您永远不必直接连接它。这就是这些框架在幕后所做的。

于 2012-05-27T23:10:19.613 回答
2

如果可以使用应用引擎,为什么还要设置和维护自己的网络服务器。它有一个优秀的 SDK 来测试你的代码。这是一个示例 https://developers.google.com/appengine/docs/python/gettingstarted/handlingforms

你会在这里找到 Django:https ://developers.google.com/appengine/docs/python/gettingstarted/templates 我更喜欢使用 Jinja 进行模板化。

于 2012-05-27T22:07:39.213 回答
-1

Django 带有自己的服务器,但在您的情况下,我会推荐 apache 和 mod_python,因为它似乎是您正在构建的一个相当简单的站点。

设置 Apache 轻而易举,在网络上进行简单搜索即可满足您的所有需求。您可以在此处找到有关 mod_python的更多信息,阅读一下它,然后在适合您需要的教程之后使用谷歌搜索。

于 2012-05-27T21:55:02.170 回答