cgi python_学习python cgi的一点心得体会

这两天学了python cgi编程,挺好玩的 跟大家分享一下:

目标:

创建一个cgi脚本 接收来访者的参数

步骤:

创建一个cgi服务的根目录(随便创建,然后在终端或者cmd下切换到该目录下)

python2.x的httpserver启动:python -m CGIHTTPServer 13333   会启动http server 在13333端口上

python3.x的httpserver启动:python -m http.server --cgi 13333 这个--cgi不可以拿掉 否则cgi脚本运行不了

然后这个时候 你就可以创建一个比如index.html 测试一下 访问了

接下来 创建cgi-bin 目录 在当前目录下(目录名必须是这个,cgi脚本就放在这个目录下),此时相对于http服务来说 根目录还是上一层的目录

可以创建一个index.py在cgi-bin下,内容:#!/usr/bin/env python

import cgi   #内置模块

html='''

My name is %s , I'm %s years old .

'''

print("Content-Type:text/html")            #header

print()                                    #声明header结束

f=cgi.FieldStorage()                       #cgi的一个类 用来接收参数的

try:

print(html%(f['name'].value,f["age"].value))

except:

print(html%('\t','\t'))

效果会在你访问的时候出现两个文本框:

有几个坑:一个是python的cgi模块的启动位置 一定要是在cgi-bin的上层目录下;

其次是index.py一定是在cgi-bin下才行 而且权限不足的话会报错;三是在实例化cgi的fieldstorage类的时候,注意别声明多次,比如我在上边的代码的try那里才去实例化,类似这样:

try :

print(html%(cgi.FieldStorage["name"].value,cgi.FieldStorage["age"].value)

except......

这样写的结果会什么都不显示 因为第一次实例化会传递数据 但是第二次的时候没有提交的结果了,所以会有可能神马都不显示或者只显示一个;

最后就是注意这个:

print("Content-Type:text/html")

print()

这个一定要写上,这个是声明头部和头部结束的,不写有问题;暂时我也就总结这么多~

跟我一起来一句英文吧:

It always seems impossible until its done

成功之前,一切看起来都是不可能的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值