用于web的Python

用于web的Python,python,Python,我已经读到Python可以用于web应用程序。然而,我想知道表单变量是如何传递给Python脚本的,也就是说,如何将Python“连接”到Apache服务器,以便它能够服务于动态网页,就像PHP如此容易地做到的那样。这是如何做到的?它比使用PHP好吗?使用像or这样的web框架 这些web框架与(可选)模板引擎、表单框架和视图函数(在php codeignitor等其他框架中称为控制器)捆绑在一起 为用户提供填写表格 表单类被写入,表单对象可以从这些表单类实例化,并在上下文中传递给模板 接收提交

我已经读到Python可以用于web应用程序。然而,我想知道表单变量是如何传递给Python脚本的,也就是说,如何将Python“连接”到Apache服务器,以便它能够服务于动态网页,就像PHP如此容易地做到的那样。这是如何做到的?它比使用PHP好吗?

使用像or这样的web框架

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

为用户提供填写表格

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

接收提交的表格

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

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

相同的原则


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

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

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

例如,是否应该为其配置apache
myapp。wsgi
如下所示: (此处按:)

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

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

快速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包没有得到维护,而apacheweb服务器仍在不断发展

mod_wsgi WSGI是一种用于在web服务器和Python处理程序之间进行通信的协议。如中所述,它不与任何特定的web服务器绑定,就像mod_Python一样。Apache使用;Nginx有自己的,其他服务器也有类似的包可用

与FastCGI一样,wsgi进程仍然驻留在请求之间。不过,它没有显式地使用套接字——相反,wsgi包为应用程序提供了一个“环境”字典,其中包括许多有关请求的详细信息,以及一对类似文件的对象:一个用于读取请求正文,另一个用于写入res庞塞

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


WSGI是目前运行Python Web应用程序的首选方法。

你好,罗伯特,我想你的问题是Python Web框架是如何有趣的,但是如果它比PHP更好,完全符合个人偏好。考虑编辑预防,以防止锁。请记住,它很有可能传递价值。从网页到apache,再到逻辑层,对于python、ruby、php或任何其他具有web框架的语言来说可能都非常相似。我不是真的在寻找框架。我想知道如何使用python作为web应用程序开发工具,让您从头开始编写代码,就像我们使用P一样简单HP.@robertrocha:最简单的方法是使用我知道你会抱怨的“仍然是一个web框架”,但正如你在web.py的主页上看到的,最简单的例子是“一个完整的web.py应用程序”。只需10行代码即可为您的第一个网页提供服务。
environ
有一个
'REQUEST\u METHOD'
检查一下这个问题:但是您最好使用一个web框架,比如Flask或Django,它可以为您处理很多事情,比如表单解析。python中的web开发在原理上与php不同——它的工作方式完全不同不同的是,你试图用php的方式使用python给自己造成了极大的伤害。理解HTTP级别的东西是很好的,但是上面的+1 Graham评论。
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]