Python趣事-2-cgi

什么是CGI

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

如何运行一段CGI的python3脚本呢?

注意:不能直接和其他python脚本一样运行,应该是放到一个服务器上进行运行,pyhton3支持在本地运行这样的脚本

1.启动python3模块中的cgi服务器,并指定端口

在控制台运行python3 -m http.server --cgi 9123,9123指的是开启的监听端口,不要关闭这个控制台窗口

2.查看端口是否成功开启,打开某个浏览器中然后输入url(localhost:9123)

allal

这个这是部分截图哈,反正就是电脑中的某个目录文件夹

3.找到这个文件夹,一般来说这个文件夹是当前用户目录,然后在这个目录里新建一个python文件,这时候就可以开始cgi编程了

将以下内容为hello.py

# -*- coding: utf-8 -*-

print('Content-Type:text/html \n')
print('')

print('Hello, world!')

然后在浏览器url中输入http://localhost:9123/cgi-bin/hello.py

这里写图片描述

WHAT ! Error …

怎么出错了?

仔细看下这个错误,这个脚本不可执行!说明这个文件是不允许被执行

所以需要修改这个脚本的权限

如果你是mac,在命令行中执行:sudo chmod 777 /Users/xxx/cgi-bin/hello.py,xxx是用户名;

如果你是windows,那么你找到这个文件,然后右键,点击属性,然后进行修改

做了以上修改,那么在一次在浏览器输入url:http://localhost:9123/cgi-bin/hello.py

kakak

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

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

cgi处理html请求

以下内容仅仅是一个入门级,如果需要深入了解,需要读者查找相关资料继续学习

编写一个html页面,主要包含了一个输入框、一个按钮,当按下按钮便提交请求

一个对应的python脚本进行处理这个请求,如果这个输入框中未输入指,则页面显示一个‘How are you ?‘,如果输入了值,则页面显示‘Hello,xxx‘。

文件cgi.html

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>CGI Page</title>
</head>

<body>
    <form method="post" action="http://localhost:9123/cgi-bin/abc.py">
        <p>
            <b>Enter you name:</b>
        </p>
        <p>
            <input type="text" name="user">
        </p>
        <p>
            <input type="submit" name="submit">
        </p>
    </form>
</body>

</html>

文件abc.py

# -*- coding: utf-8 -*-

import cgi

print('Content-Type:text/html \n')
print('') 

print('Hello, world!')

form = cgi.FieldStorage()

print('<title>Reply Page</title>')
if 'user' not in form:
    print('<h1>Who are you?</h1>')
else:
    print('<h1>Hello <i>%s<i>!</h1>' % form['user'].value)

注意修改abc.py的权限

测试:

1.以浏览器的打开方式打开cgi.html

2.直接点击按钮

3.回退以下,输入,在点击按钮

absb


未输入

asjkajs


输入

akakka

这篇博客的由来

昨天晚上,一个学弟来问了我关于cgi的问题,我之前其实也没有接触过这一方面,所以我便去查相关的资料

很快,我把cgi的环境搭好了,然后直接运行学弟发过来的cgi脚本,不知道为啥一直报错,什么错呢?

lalsl

格式错误 !!!

这是啥玩意啊!经过一段时间的资料查询,竟然发现这问题是由于系统的不一引起的,我用的macOS,而学弟是windows

想想你可能觉得这个会有存在编码问题吗?你打开文件确实没什么变化,但是呢,这里面的内容确实改变了,详细信息查看这一博客,这个真是大佬,这也行啊!!!


欢迎大家留言转载
关注微信公众号:SimFG,随时随地看博客要点
这里写图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值