CGI (通用網關接口) 是連接Web服務器和應用程序或腳本的標準協議。Python 支持 CGI 的標準庫為 cgi,這個庫支持從腳本直接接收信息。
一、CGI是什麼?
CGI (Common Gateway Interface)是一種為了保證Web服務器能夠和客戶端的瀏覽器正常通信而誕生的一種規範,即通用網關接口,現在有些地方叫做「網頁接口」,CGI 是一種工具,它允許web服務器與客戶端瀏覽器進行交互,通過這種交互,web服務器可以將客戶端提交的數據給CGI,並讓CGI將數據做適當的處理,並返回結果的HTML內容。
CGI 通常用在表單處理中,表單中的字段將會被編碼為一個 URL 字符串,並發送給瀏覽器。用戶輸入的數據可以存儲到文本文件,或者發送到一個電子郵箱或者做任何其他的處理。
二、Python CGI模塊的使用
Python 中的CGI模塊,可以使用Python自帶的 CGI 模塊來實現,該模塊封裝了一些標準的CGI操作。其中,常用的函數包括cgi.test()和cgi.run()等。
本示例實現一個簡單的 Web 應用程序,該程序支持一個表單,允許用戶在其中輸入姓名,並在提交表單時顯示消息。
#!/usr/bin/python # -*- coding: UTF-8 -*- import cgi import cgitb cgitb.enable() print "Content-type:text/html" print print "" print "" print "" print "Hello World - First CGI Program " print "" print "" print "Hello %s
" % (form.getvalue('name')) print "" print ""
這個例子會顯示一個HTML表單,用戶可以在表單中輸入他的姓名並提交。我們把這個表單提交到一個CGI腳本中,該腳本將顯示一個消息,歡迎該用戶到我們的網站上來。該腳本將從HTTP POST的輸入流中獲取表單域的值。
三、Python CGI實現動態內容
動態內容,指的是Web應用程序的內容可以根據用戶提供的信息發生變化,和靜態內容相對。那麼如何在Python的CGI腳本中實現動態內容呢。下面我們通過一個簡單的例子,來實現在Web應用程序中實現動態內容。
假設我們有一個數據文件data.txt,它包含用戶名和密碼, 每一行記錄一個用戶的信息,用戶名和密碼之間用冒號分隔。
jack:12345 rose:abcdef tom:111111
然後我們在CGI腳本中讀取這個數據文件並驗證用戶輸入的信息。如果驗證通過,我們就把該用戶的信息顯示在網頁上。
#!/usr/bin/python # -*- coding: UTF-8 -*- import cgi import cgitb # 顯示HTTP頭部內容 print "Content-type:text/html" print # 獲取表單輸入 form = cgi.FieldStorage() username = form.getvalue('username') password = form.getvalue('password') # 讀取數據文件並驗證輸入的用戶名和密碼 with open('data.txt') as f: for line in f: user, pwd = line.strip().split(':') if user == username and pwd == password: # 顯示用戶信息 print "" print "" print "" print "User Info " print "" print "" print "Welcome, %s!
" % (username) print "" print "" break else: # 顯示錯誤消息 print "" print "" print "" print "Login Failed " print "" print "" print "Login Failed: Incorrect username or password.
" print "" print ""
通過上面的例子,我們可以發現,CGI可以通過Python語言來實現動態生成內容的目的,而動態內容可以根據用戶提供的輸入發生變化。
四、總結
通過本文,我們了解了CGI是什麼,以及Python CGI模塊的使用方法。同時,我們也掌握了如何在Python的CGI腳本中實現動態內容。
Python作為一門簡潔而強大的語言,它的CGI模塊方便了Python語言與Web應用程序的交互,同時Python的語法又可以使CGI實現動態內容的目的。因此,Python具有很強的Web編程能力,在Web開發中具有不可替代的地位。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/206848.html