4

我读过 Python 可用于 Web 应用程序。然而,我想知道如何将表单变量传递给 Python 脚本,以及如何将 Python“连接”到 Apache 服务器,以便它为动态网页提供服务,就像 PHP 如此容易做到的那样。这是如何完成的,它比使用 PHP 更好吗?

4

3 回答 3

3

您可能正在寻找的答案是mod_wsgi使用 Apache 或uwsginginx。

使用这些,您可以运行您喜欢的任何应用程序。

例如应该配置 apache,因为它myapp.wsgi看起来如下:(在这里:http ://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide )

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

这只是返回网页的最低要求。

于 2012-11-08T06:21:53.377 回答
3

电脑动画

将 Python 应用程序连接到 Web 服务器的最简单方法是使用 CGI 协议。当请求进入服务器时,它将启动您的应用程序,在 STDIN 上向其提供请求正文,并在 STDOUT 上接受响应。这种技术从 Web 的早期就开始使用,并且今天仍然有效。它最大的缺点是你的整个应用程序在每次请求时都会启动和关闭,因此它不适合大量流量。

快速CGI

解决 CGI 最大问题的尝试是 FastCGI——它使用类似的协议,但您的应用程序保持常驻,并通过套接字与 Web 服务器通信(我相信,Unix 命名的套接字和 TCP 套接字都受支持)。许多 Web 服务器都支持这种技术,但现在普遍认为它不如 WSGI。Apache 通过 mod_fcgi 模块支持它。

mod_python

Python Web 应用程序和框架传统上使用 mod_python 与 Apache 连接。与 mod_perl 一样,此模块提供与 Apache API 的 Python 绑定。

有了它,您可以为请求/响应周期的任何阶段编写处理程序。您可以使用这些 Python 处理程序进行 URL 重写、身份验证和授权、标头操作和实际响应构建。

但是,不再推荐这样做,因为 mod_python 包没有得到维护,而 Apache Web 服务器仍在继续发展。

mod_wsgi

WSGI 是一种用于在 Web 服务器和 Python 处理程序之间进行通信的协议。记录在PEP-333中,它不依赖于任何特定的 Web 服务器,就像 mod_python 一样。Apache 使用mod_wsgi;Nginx 有自己的WSGI Module,其他服务器也有类似的包可用。

与 FastCGI 一样,wsgi 进程在请求之间保持驻留。但是,它并没有显式使用套接字——相反,wsgi 包为您的应用程序提供了一个“环境”字典,其中包括有关请求的许多详细信息,以及一对类似文件的对象:一个用于读取请求正文,以及编写响应的一个。

此外,与 Web 服务器与单个应用程序对话的 FastCGI 不同,WSGI 支持配置为“中间件”的应用程序。这些应用程序可以接收请求、处理它们,然后将它们传递给另一个 WSGI 进程,从而允许您从小进程构建整个 Web 应用程序,每个进程负责一个处理。

WSGI 目前是运行 python web 应用程序的首选方式。

于 2012-11-08T06:35:47.960 回答
0

使用 web 框架,如pyramidorweb2pydjango

这些 Web 框架与(和可选的)模板引擎、表单框架和视图函数(在其他框架如 php codeignitor 中称为控制器)捆绑在一起。

供用户填写的服务表格

表单类被写入,表单对象可以从这些表单类中实例化并在上下文中传递给模板。

接收表单提交

像 php 或任何其他生成 html 模板的语言一样,实例化的表单当然会显示为 html 表单。当用户单击“提交”按钮时,表单输入字段中的值将发送到表单指向的 url。

该 url 由您选择的 python 框架相应地映射,并以字符串形式接收 http 请求的 POST(表单提交)对象。然后,您可以决定要对这些传入请求 POST 对象做什么。

相同的原则

无论你使用哪种框架,选择哪种语言,基本原理都是一样的。渲染 HTML 以显示表单,接收表单的 POST 值并相应地决定您要对这些值做什么。

于 2012-11-08T06:11:21.750 回答