前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第一个Python CGI程序

第一个Python CGI程序

原创
作者头像
织幻妖
修改2021-01-18 17:57:45
8910
修改2021-01-18 17:57:45
举报

1.CGI

CGI 目前由NCSA维护,NCSA定义CGI如下:

CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户端HTML页面的接口。

CGI程序可以是Python脚本,PERL脚本,SHELL脚本,C或者C++程序等。

2.CGI架构图

3.预先创建CGI目录

所有的HTTP服务器执行CGI程序都保存在一个预先配置的目录。这个目录被称为CGI目录,并按照惯例,它被命名为/www/cgi-bin目录。我们打开本机电脑的命令窗口,创建/www/cgi-bin目录。

4.执行命令,定义端口

我们在www目录下执行一下命令“python -m http.server --cgi 8008”

注意8008端口与本机的其他端口冲突,如冲突,换其他端口执行

5.测试服务器是否正常

执行完成后,去浏览器上面输入如下地址

如果看到一下页面,则表示服务器已经正常了

6.第一个CGI程序

我们使用Python创建第一个CGI程序,文件名为hello.py,文件位于/www/cgi-bin目录中,内容如下:

代码语言:javascript
复制
print("Content-type: text/html;charset=utf-8");
print ()                             # 空行,告诉服务器结束头部
print ('<html>')
print ('<head>')
print ('<meta charset="utf-8">')
print ('<title>我的第一个 CGI 程序!</title>')
print ('</head>')
print ('<body>')
print ('<h2>我是来自菜鸟教程的第一CGI程序</h2>')
print ('</body>')
print ('</html>')

7.浏览器访问

浏览器输入一下地址 http://localhost:8008/cgi-bin/hello.py 访问

8.解决乱码问题

浏览器输入 http://localhost:8008/cgi-bin/hello.py 之后,因为编码集的问题,所以呈现出来的是乱码的 怎么解决呢,我只需要在开头加两行代码,就可以解决这个问题

代码语言:javascript
复制
import codecs,sys
sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer)

9.保存代码,重新访问

浏览器再次访问 http://localhost:8008/cgi-bin/hello.py ,完美解决

10.总结分析

完整代码如下:

代码语言:javascript
复制
import codecs,sys
sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer)

print("Content-type: text/html;charset=utf-8");
print ()                             # 空行,告诉服务器结束头部
print ('<html>')
print ('<head>')
print ('<meta charset="utf-8">')
print ('<title>我的第一个 CGI 程序!</title>')
print ('</head>')
print ('<body>')
print ('<h2>我是来自菜鸟教程的第一CGI程序</h2>')
print ('</body>')
print ('</html>')

codecs:

codecs专门用作编码转换,字符编码codecs模块,常用来读写文件

codecs模块还提供了方便程序员使用的单独函数,以简化对lookup的调用。它们是:

  • getencoder(encoding)
  • getdecoder(encoding)
  • getreader(encoding)
  • getwriter(encoding)

sys.stdout:

原始的 sys.stdout 指向控制台

如果把文件的对象的引用赋给 sys.stdout,那么 print 调用的就是文件对象的 write 方法

Content-type: text/html;charset=utf-8

脚本第三行的输出内容"Content-type:text/html"发送到浏览器并告知浏览器显示的内容类型为"text/html"。

用 print 输出一个空行用于告诉服务器结束头部信息。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.CGI
  • 2.CGI架构图
  • 3.预先创建CGI目录
  • 4.执行命令,定义端口
  • 5.测试服务器是否正常
  • 6.第一个CGI程序
  • 7.浏览器访问
  • 8.解决乱码问题
  • 9.保存代码,重新访问
  • 10.总结分析
相关产品与服务
测试服务
测试服务 WeTest 包括标准兼容测试、专家兼容测试、手游安全测试、远程调试等多款产品,服务于海量腾讯精品游戏,涵盖兼容测试、压力测试、性能测试、安全测试、远程调试等多个方向,立体化安全防护体系,保卫您的信息安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档