两种创建基于Python的网页的方法?
我想试试用Python来创建网页,而不是用PHP。不过我发现,要让Python和Apache一起工作,你需要安装mod_python或mod_wsgi这两个模块。如果你只是用纯Python代码,不使用像Django这样的网页框架,我发现用mod_python和mod_wsgi来做一个简单页面的方式是不同的。
这是为什么呢?我越了解Python,越觉得用它来做网页比用PHP要难一些。有没有什么好的入门资源可以学习Python网页开发呢?
抱歉如果我的问题不太清楚。我只是想要一些关于如何开始Python网页开发的指导。
5 个回答
我想给你一些建议,因为几个月前我也遇到过类似的情况。
你正在用Apache来托管你的网站,这很好。为了让Python和Apache更好地配合,你需要使用mod_wsgi,原因有很多,其他人也提到过:将不同的功能分开处理比cgi更好,而且mod_python已经不再支持了。
不过,你觉得不使用框架就能更接近“纯”Python编程,这个想法有点偏差。我之前也有同样的看法,尝试过Django和仅使用mod_wsgi。让我分享一下我的发现。
Mod_wsgi是WSGI标准的一种实现,具体可以参考PEP 333。实现和标准之间的区别很重要。首先,这意味着符合WSGI标准的应用程序可以在不同的实现上运行。更重要的是,这揭示了WSGI的真正目的。WSGI是为了编写框架而设立的标准。从PEP中可以看到:
框架作者实现的简单性和网页应用作者使用的简单性并不是一回事。
还有:
WSGI的目标是方便现有服务器和应用程序或框架之间的连接,而不是创建一个新的网页框架。
我并不是说你不应该使用wsgi,但你要做好准备,可能更多的是在写一个框架,而不是一个应用。如果你有兴趣写一个简单的框架,可以参考这个教程,这是我开始的地方。
不过,如果你只是想做一个网站,可以看看其他人推荐的框架。你仍然会写Python代码,但这些框架的作者已经努力让你写的代码更容易生成网站,而不是框架。我个人使用过Django,一旦它运行起来,制作有趣的应用就变得相对简单了。而且,他们的文档非常好,还有一个很不错的教程在这里。不过要注意,Django功能非常全面,如果你想要一些更简约的东西,我听说Flask也不错,但还有很多其他选择。
mod_wsgi 更好,因为它是基于 WSGI 规范的。WSGI 规范定义了网络应用(或框架)和网络服务器之间的接口。简单来说,一个 WSGI 应用就是一个函数,它通过回调发送一些 HTTP 头信息,并根据 HTTP 请求的信息返回一个字符串。由于很多网络服务器都支持 WSGI,你就不必局限于使用 Apache 了。
如果你想在 Python 中进行没有框架的纯粹网页开发,最接近的方式就是直接编写 WSGI 应用。这能帮助你更清楚地看到像 Django 这样的框架可能会隐藏的一些东西。
为了让事情更简单,你可以考虑使用 Werkzeug,这是一个为 WSGI 提供的工具库。它有很多像框架一样的组件,但你可以选择需要的部分,而不需要的部分可以不使用。例如,它有一个非常不错的系统,可以解析和分发 URL。Werkzeug 还有一个简单的命令行 WSGI 服务器,这在开发时可能比 Apache 更好用。
是的,用Python制作网页而不使用网络框架,确实比用PHP要难。这是因为Python设计上给了你更多的控制权,让你可以更好地管理网页和服务器之间的互动,这样你可以建立更好扩展性的网站,还有其他好处。WSGI是与服务器互动的现代方式,但正如你所观察到的,它包含了很多PHP隐藏起来的细节。
如果你想要在Python中体验类似PHP的感觉,可以看看web.py或Flask。这两个框架都比较简单,能处理和服务器的互动,但不会干扰你的开发。
不过,我真的建议你考虑使用Django或其他类似的框架——它们提供了一些很棒的功能,可以帮助你快速搭建那些本来会很复杂的网站。它们解决的问题和常见的PHP框架略有不同,所以即使你不喜欢PHP的框架,也可以考虑一下这些。
如果你想要更像PHP的方式来做事情,可以使用CGI。这绝对不是一个推荐的解决方案,也不会教你未来的最佳实践,但可以让你入门……
不过,真的建议你考虑使用框架。大多数Python网页开发都是通过框架来完成的,如果你使用框架开发,你会学到更多有用的技能。