面向web的Python

2024-04-19 06:44:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我读过Python可以用于web应用程序。然而,我想知道表单变量是如何传递给Python脚本的,也就是说,如何将Python“连接”到Apache服务器,以便它能够像PHP那样轻松地为动态web页面提供服务。如何做到这一点?它是否比使用PHP更好?在


Tags: 服务器脚本web应用程序表单apache动态页面
3条回答

CGI公司

将Python应用程序连接到web服务器的最简单的方法是使用CGI协议。当一个请求进入服务器时,它将启动您的应用程序,在STDIN上向它提供请求主体,并在STDOUT上接受响应。这项技术从网络出现的最早时期就开始使用,至今仍然有效。它最大的缺点是,你的整个应用程序会随着每一个请求而启动和关闭,因此它不适合大量的流量。在

快速CGI

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

mod峎python

Python web应用程序和框架,传统上使用mod\upython与Apache连接。与mod_perl一样,此模块提供了到apacheapi的Python绑定。在

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

不过,这不再是推荐的,因为mod\upython包没有得到维护,而apacheweb服务器仍在不断发展。在

mod\wsgi公司

WSGI是web服务器和Python处理程序之间通信的协议。在PEP-333中记录,它与任何特定的web服务器无关,就像mod python一样。Apache使用mod_wsgi;Nginx有它自己的WSGI Module,其他服务器也有类似的包可用。在

与FastCGI一样,wsgi进程仍然驻留在请求之间。它没有显式地使用套接字,但是wsgi包为您的应用程序提供了一个“environment”字典,其中包括关于请求的许多细节,以及一对类似文件的对象:一个用于读取请求主体,另一个用于写入响应。在

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

WSGI是当前运行pythonweb应用程序的首选方法。在

使用像^{}^{}^{}这样的web框架。在

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

为用户填写表格

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

接收表格提交

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

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

相同的原则

无论您使用哪种框架和选择哪种语言,基本原则都是相同的。呈现HTML以显示表单,接收表单的POST值并相应地决定要对这些值执行什么操作。在

您可能要寻找的答案是使用Apache的mod_wsgi,或者使用nginx的uwsgi。在

你可以像这样使用任何应用程序。在

例如,应该为它配置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]

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

相关问题 更多 >