CGI(Common Gateway Interface)是指URL与web服务器之间的接口,CGI程序可以被作为web服务器的一部分来执行,通过用户的请求生成动态的web页面。Python作为一门脚本语言,可以轻松地编写CGI程序,并通过生成动态网页来提供交互性的网站。
一、CGI基础知识
1. CGI是什么?
CGI是一种通用的接口,它使得Web服务器可以调用其他程序来处理Web请求。当Web浏览器请求访问Web页面时,Web服务器会把CGI程序看做是一款普通的可执行文件,运行该程序并将生成的结果返回给Web浏览器。
2. 如何使用CGI实现动态网页?
通过编写CGI程序,可以处理表单数据、数据库操作、文件上传等多种任务。CGI程序通常与Web服务器一起创建,当有用户请求访问Web页面时,Web服务器会发送CGI请求到指定的服务器地址,在服务器上运行CGI程序,并将结果发送回Web浏览器。
3. CGI是如何运作的?
当Web浏览器请求访问Web页面时,Web服务器会收到该请求并把它作为参数传递给CGI程序。CGI程序会将请求的信息解析成环境变量(如HTTP_COOKIE、QUERY_STRING等),通过标准输入接收请求的数据,并通过标准输出返回生成的网页。返回的网页数据会由Web服务器发送给Web浏览器。
二、Python CGI基础应用
1. 生成HTML页面
Python提供了CGI模块,用于生成HTML页面。CGI模块包含一个CGI类,该类可以处理请求并返回动态HTML页面。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import cgi
# 创建CGI对象
form = cgi.FieldStorage()
# 获取表单参数
name = form.getvalue('name')
# 返回HTML页面
print("Content-type:text/html")
print()
print("")
print("")
print("Hello Word - Python CGI ")
print("")
print("")
print("Hello %s
" % (name))
print("")
print("")
该程序通过获取表单参数并返回HTML页面,向用户打招呼。在浏览器中输入网页地址,即可看到效果。代码中的print语句会将对应的HTML标签输出到浏览器上。
2. 显示系统信息
使用Python CGI还可以显示系统信息。Python自带的platform模块包含了获取系统信息的函数,在CGI中可以利用该模块来获取系统信息并返回HTML页面。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import cgi
import platform
# 返回HTML页面
print("Content-type:text/html")
print()
print("")
print("")
print("System Info - Python CGI ")
print("")
print("")
print("System Info
")
print("Processor: %s
" % (platform.processor()))
print("Operating System: %s
" % (platform.system()))
print("Python Version: %s
" % (platform.python_version()))
print("")
print("")
该程序通过platform模块获取系统信息并返回HTML页面。在浏览器中输入网页地址,即可看到包含系统信息的页面。
三、Python CGI进阶应用
1. 利用CGI实现用户登录
通过CGI程序可以实现用户登录功能。用户输入用户名和密码,CGI程序验证并返回登录成功或失败的信息。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import cgi
# 登录用户信息
users = [
{'name': 'user1', 'password': 'pwd1'},
{'name': 'user2', 'password': 'pwd2'},
{'name': 'user3', 'password': 'pwd3'}
]
# 创建CGI对象
form = cgi.FieldStorage()
# 获取表单参数
name = form.getvalue('name')
password = form.getvalue('password')
# 查找用户信息
user = None
for u in users:
if u['name'] == name and u['password'] == password:
user = u
# 返回登录结果
print("Content-type:text/html")
print()
print("")
print("")
print("Login - Python CGI ")
print("")
print("")
if user:
print("Login successfully, welcome %s
" % (name))
else:
print("Login failed, please check your name and password.
")
print("")
print("")
该程序实现了一个简单的用户登录功能。在浏览器中输入用户名和密码,CGI程序验证用户信息并返回登录结果。
2. 利用CGI实现文件上传
CGI还可以实现文件上传功能。用户选择上传的文件,CGI程序获取并存储文件。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import cgi
import os
# 创建CGI对象
form = cgi.FieldStorage()
# 保存文件
fileitem = form['filename']
if fileitem.filename:
fn = os.path.basename(fileitem.filename)
open('/tmp/' + fn, 'wb').write(fileitem.file.read())
# 返回结果
print("Content-type:text/html")
print()
print("")
print("")
print("File Upload - Python CGI ")
print("")
print("")
if fileitem.filename:
print("The file %s is uploaded successfully.
" % (fn))
else:
print("No file is uploaded.
")
print("")
print("")
该程序实现了文件上传功能。在浏览器中选择文件并上传,CGI程序获取并存储文件,并返回上传结果。
四、总结
Python CGI作为一种生成动态网页的技术,可以通过多种方式来实现用户交互和数据处理。通过本文的介绍,读者可以了解到Python CGI的基本原理和使用方法,并可以尝试编写自己的CGI程序。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/239734.html
微信扫一扫
支付宝扫一扫