制作基于python的网页的两种方法?

时间:2011-01-13 22:08:13

标签: php python

我想尝试使用python创建网页而不是使用php。但是我发现你需要在apache上安装mod_python或mod_wsgi来使它与python一起玩。如果你现在使用pure,我不确定它是否应该说纯,python代码,不使用像django这样的任何web框架。我发现在mod_python和mod_wsgi中创建一个简单的页面看起来有所不同。

怎么样?,我对python的看法越多,它似乎就越难用来制作与php相比较的网页。学习python webdevelopment有一些很好的起点吗?

很抱歉,如果我的问题模糊不清。我只是想从python webdevelopment

开始一些指导

5 个答案:

答案 0 :(得分:3)

是的,在不使用Web框架的情况下使用python制作网页比使用php更难。这是设计使然,因为它可以让您更好地控制页面与服务器的交互方式,从而可以构建可以扩展的网站,以及其他好处。 WSGI是与服务器交互的现代方式,但正如您所观察到的,它包含了PHP隐藏给用户的许多细节和螺栓。

如果您正在为python寻找类似php的体验,您可以查看web.pyFlask。就框架而言,它们非常简约,并且负责与服务器进行交互,但不会妨碍您。

那就是说,你真的应该考虑Django或其他类似的框架 - 它们提供了一些非常好的好处,可以帮助你获得原本很复杂的网站。它们解决了一个稍微不同的问题,并提供了来自常见PHP框架的不同解决方案,因此即使您不喜欢PHP中的框架,也应该考虑它们。

如果你想以更像php的方式做事,你可以使用CGI。它绝对不是一个推荐的解决方案,也不会教你前进的最佳实践,但它可以帮助你开始......

但实际上,请考虑一个框架。这就是Python中用于Web的大部分开发的完成方式,如果您使用它开发,您将学到更多有用的技能。

答案 1 :(得分:1)

mod_wsgi更好,因为它基于WSGI规范,该规范定义了Web应用程序(或框架)与Web服务器之间的接口。最简单的WSGI应用程序只不过是一个通过回调发送一些HTTP头并返回一个字符串以响应有关HTTP请求的信息的函数。由于WSGI由许多Web服务器实现,因此您不依赖于Apache。

最接近Python的纯无框架Web开发是直接编写WSGI应用程序。这将真正帮助您看到像Django这样的框架会模糊不清的东西。

为了简化操作,您可以考虑使用Werkzeug,它是WSGI的实用程序库。它有许多类似于框架的组件,但您可以选择您想要的组件和不需要的组件。例如,它有一个非常简洁的系统,用于解析和分派URL。 Werkzeug还有一个简单的命令行WSGI服务器,它可能比Apache更适合开发。

答案 2 :(得分:1)

我正在回复你的一些建议,就像几个月前情况非常相似的人。

所以你使用apache来托管你的网站。这很酷。为了让python在apache中运行得很好,你会想要使用mod_wsgi,原因是其他人已经说过了:关注点的分离使得它比cgi更好,并且不再支持mod_python。

但是,你对前面一个框架的印象会让你更接近“纯粹”python的编程,这有点不合时宜。我有同样的观点,并尝试使用Django并仅使用mod_wsgi。让我分享一下我找到的东西。

Mod_wsgi是PEP 333中的WSGI标准的实现。实施和标准之间的区别很重要。首先,因为这意味着符合WSGI的应用程序将跨实现工作。更重要的是,它揭示了WSGI要做的重要事情。也就是说,WSGI旨在成为编写框架的标准。来自PEP:

  

框架作者的简单实现与Web应用程序作者的易用性不同

  

WSGI的目标是促进现有服务器和应用程序或框架的轻松互连,而不是创建新的Web框架。

我并不是说你不应该对wsgi做些什么,但你应该期望编写一个框架而不是一个应用程序。如果您对编写一个简单的框架感兴趣,this tutorial就是我开始的地方。

但是,如果您只是想建立一个网站,请查看其他人建议的框架之一。你仍然会编写python代码,但作者努力使你编写的代码与生成网站的关系更紧密,而不是生成框架。我个人使用过Django,一旦它启动并运行,生成有趣的应用程序是相当轻松的。此外,他们的文档非常好,他们有一个很好的教程here。话虽这么说,Django功能非常全面,如果你想要一些更简约的东西,我听说过有关Flask的好东西,但是还有很多其他的选择。

答案 3 :(得分:0)

你可以使用普通的CGI,这非常简单。创建一个如下所示的Python程序:

#!/usr/bin/env python

import sys

sys.stdout.write("Content-type: text/html\r\n\r\n")

print("Hello <em>world</em>!")

使此文件可执行(chmod +x)并将其放在您为Web服务器中的CGI文件配置的目录中。

您还会发现标准的Python cgi模块非常有用。

答案 4 :(得分:0)

如果你的目标是使你的python程序网络友好,那么答案是Cherrypy。它是一个非常灵活和简单的框架,可以使您的python对象在Web中公开。检查一下,它有一个很好的内置Web服务器,你不需要apache / mod_wsgi等,