我应该学习什么才能成为PHP和Python网页开发的高手?

1 投票
5 回答
533 浏览
提问于 2025-04-15 20:36

我来给大家展示一下我在PHP中做网页开发的代码。

<html>

<head>
<title>Example #3 TDavid's Very First PHP Script ever!</title>
</head>
<? print(Date("m/j/y")); 
require_once("somefile.php"); 
$mysql_db = "DATABASE NAME";
$mysql_user = "YOUR MYSQL USERNAME";
$mysql_pass = "YOUR MYSQL PASSWORD";
$mysql_link = mysql_connect("localhost", $mysql_user, $mysql_pass);
mysql_select_db($mysql_db, $mysql_link);

$result = mysql_query("SELECT impressions from tds_counter where COUNT_ID='$cid'", $mysql_link);
if(mysql_num_rows($result)) {
   mysql_query("UPDATE tds_counter set impressions=impressions+1 where COUNT_ID='$cid'", $mysql_link);
   $row = mysql_fetch_row($result);
   if(!$inv) {
       print("$row[0]");
   }
}

?>

<body>
</body>
</html>

就这样。我每个文件都是这么写的。最近,我学了面向对象编程(OOP),开始在PHP中使用类和对象。

我听说PHP有很多框架,大家都说必须使用这些库。但我觉得它们只是让事情变得复杂。

无论如何,这就是我一直以来的网页开发方式。现在,我想提升一下,让它变得更专业。同时,我也想转向Python。我在StackOverflow上查了一下,发现大家都在推荐Django。但是,有人能告诉我在Python中网页开发是怎么回事吗?

用户(客户端)请求页面 ---> 网页服务器(->嵌入的PHP解释器) ----> 服务器端(PHP)脚本 ---> MySQL服务器。

那么,是不是说在Python中,PHP解释器换成了Python解释器,PHP脚本换成了Python脚本,这个Python脚本里包含了HTML和一些Python代码(用某种Python标签嵌入)。Python脚本连接到数据库服务器,获取一些数据,然后以HTML的形式打印出来?还是说在Python的世界里是不同的?

Django这个东西是不是类似于PHP的框架?难道不可以在不使用Django的情况下用Python编程吗?因为我从来没有看到过没有Django的帖子。

请给我一些启发。

5 个回答

1

你可以在你的代码示例中改进的一点是:不要重复自己

你说你每个文件都像上面那样写?如果是这样的话,你的数据库密码就会出现在每个文件里,而且连接数据库的代码也重复了很多次。这会让代码变得杂乱不堪,如果你的数据库密码有一天需要更改,你就得更新很多文件!

这样做会更好:

require_once("database_connection.php");
//Write function in above file that returns database connection.
//That will be the only place you need to give the database name and login.
//Use PDO so that you can use a different database type later if you like, and
//so you get better capabilities
$dbc = default_db_connection();
//If using PDO, you can use parameterized queries 
$query = "INSERT INTO `ninjaturtles` (`name`, `weapon`, `color`) ";
$query .= "VALUES (:name, :weapon, :color)";
//OO style, tells database "I'm going to send a query that looks like the above;
//I'll tell you what data to plug in for those variables in a second."
$st = $dbc->prepare($query);
//Now you tell the database to plug in the following values and run the query.
//User-entered values are automatically escaped and can't possibly screw with
//the query structure - a huge security benefit - see bobby-tables.com
//Also, you can re-run this command by calling execute again with different
// values - faster than starting a new query from scratch
$st->execute(array(
  ':name' => $_POST['name'],
  ':weapon' => $_POST['weapon'],
  ':color' => $_POST['color']
 ));

PDO 还给你提供了一种(我觉得)很不错的简单查询语法:

$query = "SELECT `speed`, `tenacity` FROM `badgers`";
$st=$dbc->query($query);
foreach($st->fetchall() as $row){
  echo 'Speed: ' . $row[`speed`] . '<br />';
  echo 'Tenacity: ' . $row[`tenacity`] . '<br />';
}
2

但是,有人能给我讲讲Python的网页开发是怎么回事吗?

用户(客户端)请求一个页面 ---> 网页服务器(---> 嵌入的PHP解释器) ---> 服务器端(PHP)脚本 ---> MySQL服务器。

那么,是否可以理解为,PHP解释器换成了Python解释器,而PHP脚本换成了Python脚本,这个Python脚本里包含了HTML和一些Python代码(用某种Python标签嵌入)。Python脚本会连接到数据库服务器,获取一些数据,然后以HTML的形式展示出来。或者在Python的世界里是不同的呢?

下面是Django的工作原理:

  • 用户请求一个页面。
  • 根据URL,服务器会调用一个Python函数(你可以用正则表达式来配置这个)。
  • 这个Python函数会执行需要做的工作,通常是从数据库中获取一些数据。
  • 然后它会调用一个模板,模板基本上就是一个HTML页面,里面有一些占位符用来放实际的数据。模板引擎会根据模板和数据生成一个HTML页面。
  • 这个页面会被发送给客户端。

可以看到,一个主要的区别是数据逻辑和展示是清晰分开的(在PHP中也可以做到,但并不是强制的)。

3

PHP是为了制作网页而开发的,所以它的很多基础设施已经为你准备好了。而Python则是作为一种通用的脚本语言开发的,因此你需要额外的一些工具来处理请求和生成网页。

Python有很多框架可供选择。Django是最受欢迎的,但Pylons也是一个不错的选择。你可以看看这份Python网页框架的列表

一个网页应用可能会使用一些组合,比如基本的HTTP应用服务器、存储机制(比如数据库)、模板引擎、请求调度器、认证模块和AJAX工具包。这些可以是单独的组件,也可以在一个高级框架中一起提供。

以下是一些最受欢迎的高级框架。很多框架都包含了网页组件页面上列出的组件。

  • Django(1.1版本发布于2009-07-29)是一个高级的Python网页框架,鼓励快速开发和简洁、实用的设计。

  • Grok(1.0版本发布于2009-10-07)是基于现有的Zope 3库构建的,旨在提供更容易的学习曲线和更灵活的开发体验。它强调约定优于配置和DRY(不要重复自己)。

  • Pylons(0.9.7版本发布于2009-02-23)是一个轻量级的网页框架,强调灵活性和快速开发。它结合了Ruby、Python和Perl的最佳思想,提供了一个结构化但极其灵活的Python网页框架。它也是最早利用新兴的WSGI标准的项目之一,这个标准允许广泛的重用和灵活性,但只有在你需要的时候。Pylons的目标是让网页开发快速、灵活和简单。Pylons是基于Paste构建的(见下文)。

  • TurboGears(2.0版本发布于2009-05-27)是你一直在寻找的快速网页开发超级框架。它结合了CherryPy、Kid、SQLAlchemy和MochiKit。几分钟内就能创建一个数据库驱动的、可扩展的应用程序。所有这些都有设计师友好的模板,浏览器端和服务器端的简单AJAX,以及一个强大而灵活的对象关系映射器(ORM),代码写起来就像写函数一样自然。查看完网站后,可以看看:快速入门手册。

  • web2py(1.72.3版本发布于2009-11-10)是一个一体化的包,没有其他依赖。开发、部署、调试、测试、数据库管理和应用维护都可以通过提供的网页界面完成。web2py没有配置文件,不需要安装,可以从USB驱动器运行。web2py使用Python作为模型、视图和控制器,内置了一个错误管理的工单系统,一个国际化引擎,支持MySQL、PostgreSQL、SQLite、Oracle、MSSQL和Google App Engine,通过ORM抽象层进行操作。web2py还包括处理HTML/XML、RSS、ATOM、CSV、RTF、JSON、AJAX、XMLRPC、WIKI标记的库。它已经准备好投入生产,能够上传/下载非常大的文件,并且始终向后兼容。

  • Zope(2.10.7版本发布于2008-10-25,2.11.2版本发布于2008-25-10,Zope 3.4.0版本发布于2009-01-29)作为Python网页框架的祖宗,Zope多年来发展成了一个框架家族。Zope 1于1999年发布。Zope 2既是一个网页框架,也是一个通用的应用服务器,现在主要用于内容管理系统。

撰写回答