Macbook实现python CGI

CGI配置

这部分建议参考网址:Mac配置CGI,写的很好很详细。我在此稍加总结概括,便于大家操作使用。

1. 检查Apache是否配置好

在终端输入如下代码检验Apache是否装好及版本:

sudo apachectl start
sudo apachectl -v

注:sudo apachectl start输入后会要求输入密码(即Mac密码),且不会显示,输入后直接回车即可。
操作截图
启动后,浏览器访问http://127.0.0.1或http://localhost ,看到页面显示 “It Works!” 说明开启成功。

2. 配置Apache

在终端输入sudo vim /etc/apache2/httpd.conf对配置文件进行修改。共4步。

  1. 把下图写有CGI的这行前边的“#”去掉,取消注释:
    在这里插入图片描述
  2. 在下图处添加 .py(Mac终端对文件的修改按i即可进入编辑):
    在这里插入图片描述
  3. 把下图这句句首的注释“#”去掉:
    在这里插入图片描述
  4. 找到如下的,修改当中的内容配置CGI-Executables:
    在这里插入图片描述

上述操作完成后,按esc键并输入:wq保存退出,并输入sudo apachectl restart重启Apache。

CGI程序编写

1. 代码实现

第二部分是程序的编写。如果要实现cgi网页,需要将python文件建在/Library/WebServer/CGI-Executables路径(文件夹)下。

重点来了!!!

对于python文件的内容,我认为是CGI最关键的部分——python的输出内容,即为你想要实现的网页的HTML代码!

这部分我在其他博客里暂时还没有看到,但我认为对于cgi的理解非常重要。
举个例子,如果我们想要在网站输出一个标题和一个内容,那么对应的HTML代码内容应该为:

<html>
<head>
<meta charset="utf-8">
<title>这是标题</title>
</head>
<body>
<h1>这是内容</h1>
<h2>Hello world!</h2>
</body>
</html>

对应的网页界面应该如下:
在这里插入图片描述

而对于cgi而言,上面的HTML代码,就应该作为python中print的内容。同时保证在代码的最上面加上print("Content-type:text/html")来发送给浏览器告诉浏览器文件的内容类型(HTTP代码),并在下一行输入print("")来将前一行代码和后面的HTML代码分隔开。接下来,后面的内容,即为输出HTML代码。假设我们创建的python文件名为test.py,其具体代码如下:

print("Content-type:text/html")
print('')
print('<html>')
print('<head>')
print('<meta charset="utf-8">')
print('<title>这是标题</title>')
print('</head>')
print('<body>')
print('<h1>这是内容</h1>')
print('<h2>Hello world!</h2>')
print('</body>')
print('</html>')

运行结果如下图:
在这里插入图片描述
看上图的输出结果,是不是完全是HTML代码?

大家明白了吗?换句话说,你运行这个python代码后看到的输出结果,即为cgi读取的HTML代码的全部内容,相当于把输出的内容在HTML的编译器里跑了一遍出来的网页结果(此处的“相当于”只是为了便于理解,具体工作原理没有细究是否真正相同)。

2. 网页验证

为了确保CGI正常运行,还需要在终端修改test.py文件权限为 755,打开终端输入cd /Library/WebServer/CGI-Executables先进入到当前文件夹,再修改权限:

cd /Library/WebServer/CGI-Executables
chmod 755 test.py

由于文件名为test.py,因此需要在浏览器中输入http://localhost/cgi-bin/test.py进入test.py(点击即可直接进入)。得到结果如下:
在这里插入图片描述
说明CGI成功根据代码生成了网页。初体验成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值