用cgi模块获取query string中的参数

2020年10月13日 / 5次阅读 / Last Modified 2020年10月13日
CGI

URL的query string,就是下面这样的形式:

https://domain.com/url?query_string

即 ? 后面的部分。这部分带了浏览器发给server的一些参数,web程序会根据这些参数动态生产响应的数据返回。

关于query string:

  • 形如key=value
  • 多个参数:key1=value1&key2=value2&key3=value3,&也可以用 ; 代替
  • query string中的特殊符号会采用%XX的编码方式,XX对应8bit的16进制
  • 相同的key可在query string中多次出现

python标准库中的cgi模块,提供了一点接口,可以让python cgi程序很方便的获取到query string中的参数。

如 http://192.168.1.198/cgi/test.py?a=1;b=2;c=3,获取abc参数的代码如下:

import cgi
qsdata = cgi.FieldStorage()

print(qsdata.getvalue('a'))
print(qsdata.getvalue('b'))
print(qsdata.getvalue('c'))

输出是在网页上,就不截图了。

FieldStorage对象就像一个dict,有keys(),有len()函数可以调用:

import cgi
qsdata = cgi.FieldStorage()

print(len(qsdata))
if 'a' in qsdata:
    print(qsdata['a'].value)

如果在query string中,一个key多次出现,像这样 http://192.168.1.198/cgi/test.py?a=1;b=2;c=3;a=4;a=5,我们就要用如下代码:

import cgi
qsdata = cgi.FieldStorage()

la = qsdata.getlist('a')
for i in la:
    print(i)

获取 query string 的方式不止cgi模块,还可以使用 os.environ 通过环境变量获取。

-- EOF --

本文链接:https://www.pynote.net/archives/2567

留言区

《用cgi模块获取query string中的参数》有1条留言

电子邮件地址不会被公开。 必填项已用*标注

  • 麦新杰

    网页表单通过GET方法传递数据,相当于在URL上使用 query string;Post方法就没有 query string。 [回复]


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top