一、CGI简介
CGI(Common Gateway Interface)是Web服务器和应用程序之间进行交流的标准接口,它可以让Web服务器将Python程序处理后的结果返回给客户端浏览器。
CGI技术的优点是可以让Web内容动态生成,不再需要写静态的HTML文件,而是可以基于客户端的请求动态地生成内容并返回给客户端。因此,CGI成为了Web应用的重要手段之一。
Python自带了cgi和cgitb两个模块,可以方便地创建CGI程序。
二、编写CGI程序
使用Python编写CGI程序需要注意以下几点:
1、将Python脚本放置在Web服务器认可的CGI目录下,并赋予可执行权限
2、在Python脚本的开头添加Shebang行,指示使用的Python解释器路径
3、使用print语句输出HTTP头和HTTP内容
#!/usr/bin/env python # -*- coding: UTF-8 -*- import cgi print "Content-type: text/html\n" print "Hello, Python CGI " print "Hello, Python CGI
"
三、获取表单数据
在Web开发中,表单是常见的交互方式,CGI程序可以获取表单提交的数据,并做进一步的处理。
Python的cgi模块提供了FieldStorage类,用于处理表单数据。
#!/usr/bin/env python # -*- coding: UTF-8 -*- import cgi form = cgi.FieldStorage() name = form.getvalue("name") email = form.getvalue("email") print "Content-type: text/html\n" print "Hello, Python CGI " print "Hello, %s
Your email is %s
" % (name, email)
四、数据库连接
Web应用中,数据库是不可或缺的组成部分,可以通过Python的DB-API实现Python和数据库的交互。
Python的MySQLdb模块可以连接MySQL数据库。
#!/usr/bin/env python # -*- coding: UTF-8 -*- import cgi import MySQLdb form = cgi.FieldStorage() name = form.getvalue("name") email = form.getvalue("email") conn = MySQLdb.connect(host='localhost', user='root', passwd='', db='test', port=3306) cursor = conn.cursor() cursor.execute("INSERT INTO users (name, email) VALUES (%s, %s)", (name, email)) conn.commit() print "Content-type: text/html\n" print "Hello, Python CGI " print "Hello, %s, your email is %s
Database updated successfully!
" % (name, email)
五、使用模板引擎
在复杂的Web应用中,页面渲染需要使用模板引擎,Python的jinja2模块是一个流行的模板引擎。
#!/usr/bin/env python # -*- coding: UTF-8 -*- import cgi import MySQLdb from jinja2 import Environment, FileSystemLoader form = cgi.FieldStorage() name = form.getvalue("name") email = form.getvalue("email") conn = MySQLdb.connect(host='localhost', user='root', passwd='', db='test', port=3306) cursor = conn.cursor() cursor.execute("INSERT INTO users (name, email) VALUES (%s, %s)", (name, email)) conn.commit() env = Environment(loader=FileSystemLoader('templates')) template = env.get_template('hello.html') output = template.render(name=name, email=email) print "Content-type: text/html\n" print output
以上就是Python CGI应用的一些基本知识,通过这些知识我们可以轻松地编写动态Web应用程序。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/196860.html