Python与HTML的结合效果如何,和PHP相比呢?

11 投票
5 回答
5805 浏览
提问于 2025-04-15 13:46

我在考虑把我的网页应用从PHP换成Python,但我想知道Python在处理HTML方面是否和PHP一样灵活。简单来说,我觉得用<? and ?>把PHP嵌入到我想要的地方非常简单直观,这样我就可以随意安排和组织我的HTML。那么,用Python做到这一点是否同样简单呢?根本上,我想问的是:用Python处理HTML的难易程度和用PHP处理HTML相比,是否一样?

补充说明:为了帮助澄清下面评论中的一些困惑,我感觉PHP在组织网站的前端展示部分会比Python更好,而Python在后端编程方面会更出色……我的问题是 - 我错了吗?Python在前端方面和PHP一样好吗?

补充说明我的补充:啊,我开始意识到我之前的错误了;看来我不知不觉中养成了一些坏习惯。我一直以为在伪代码中使用PHP做这样的事情是可以的(也就是标准做法):

If user has filled out form:
    print this html
else:
    print this html

但实际上我应该使用HTML模板,把PHP放在一个单独的文件里。在这种情况下,PHP和Python的竞争是公平的,可能就看我个人对编程语言的喜好了。

5 个回答

2

首先,你得知道,把代码和展示内容混在一起是不太好的做法。虽然有一些模板引擎,比如Mako,可以让你在HTML里面混用Python代码,但通常来说,Python的网页库和框架更倾向于把逻辑写在一个Python脚本文件里,然后用一个单独的HTML模板来显示结果。

话说回来,Python比PHP简单多了。

不过,你只有在愿意学习Python编程方式的情况下,才能真正提高效率。

如果你想用PHP,那就没有比PHP更适合PHP的了,而Python的做法和PHP不一样,所以你可能会感到沮丧,因为事情和你习惯的方式不一样。

但是,如果你在寻找一种新的、更好的做事方式,Python就是你的选择。

在看完基础Python教程后,可以试试一些Python网页框架,比如Pylons,亲自体验一下。

2

如果你开始学习MVC网页框架,你会发现其实PHP和Python在使用HTML方面很相似。

处理请求的工作是在控制器里完成的,控制器会用模型来获取数据。然后,结果会被发送到视图,视图实际上就是一个HTML模板。

你可以有一个排版整齐的HTML文件作为视图,而你的控制器只需要告诉它该用什么内容来填充。

在PHP中,这通常是通过替代PHP语法来实现的。

26

比较PHP和Python并不是一件简单的事。

PHP是一个专门为网页处理设计的框架,主要作为Apache的插件使用。它不仅处理HTTP协议,还包含了一种编程语言。

而Python“只是”一种编程语言。虽然有很多Python的网页框架可以和Apache结合使用,比如mod_wsgi、CGI等,还有各种复杂程度的网页应用框架。

用“我想把PHP放到我想要的地方”来评价Python作为网页应用开发语言并不合适。

框架(比如PylonsDjangoTurboGears等)将网页应用的展示(HTML模板)、编程和数据库访问分开。而PHP则把这三者混合在一起,统统用PHP语言来处理。

如果你想从PHP转到Python,你需要做以下几件事。

  1. 从零开始,不要有任何先入为主的想法或偏见。

  2. 从你选择的框架的教程开始,完全按照教程来做,不要把你做的事情和PHP进行比较。

  3. 在你选择的框架上重新开始解决你想要解决的问题,整个过程都不要和PHP进行比较。

一旦你用Python的网页框架构建了一个东西——而且没有和PHP进行比较——你就可以停下来对比一下这两者的不同。

那些问类似于Python - substrjava和python中PHP的foreach($array as $key => $value)的等价物Python中PHP $_SERVER的等价物是什么?这样问题的人,有时候是在试图把他们的PHP知识映射到Python上。不要这样做。

开始使用Python网页框架的唯一方法就是完全从头开始。


编辑

所有Python网页框架的模板引擎都有一些“展示逻辑”的功能。这是一条“滑坡”之路,容易让一个简单的模板变得复杂。显然,简单的{% if %}{% for %}结构可以帮助简化HTML模板中的条件和重复元素。

但在这之后,关于标签语言应该具备多少功能就变得模糊了。

在一个极端,我们有PHP/JSP等相关技术,模板引擎可以(并且通常会)做所有事情。这会变得很混乱。中间的例子是JinjaMako,它们的模板引擎可以做很多事情。而在另一个极端是Django,它的模板引擎尽量少做事情,以避免展示和处理逻辑混在一起。

撰写回答