一、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/zh-hant/n/196860.html