pythoncgibin
A. 能不能做一個html頁面,然後按鈕的功能用python實現
你好 可以的,不過你需要會javascript和AJAX,AJAX可以在不刷新網頁的情況下把數據傳給後端,你可以通過HTML來定義按鈕,然後通過javascript定義按鈕事件,然後通過AJAX把數據傳給後端,後端用Python處理後在把數據傳給前端,如果你對javascript還不是太熟練的話可以使用jQuery這個javascript庫,jQuery簡化了很多原生javascript復雜的部分。不過如果你需要的功能能在前端實現的話就盡量不要讓後端來作,除非是必須要提交數據給後端處理,因為每次提交數據給後端都要耗費一定的時間,如果遇上網路不好的情況體驗會比較差。希望我的回答能夠幫助到你,如果還有什麼疑問可以繼續追問。
httpd.conf裡面原本就五行注釋。下面的幾行是剛加入的,加入後就變成沒有許可權訪問了。所以又注釋掉了。順便說一下,我不是馬甲# This is here for backwards compatability reasons and to support# installing 3rd party moles directly via apxs2, rather than# through the /etc/apache2/mods-{available,enabled} mechanism.##LoadMole mod_placeholder /usr/lib/apache2/moles/mod_placeholder.so# ScriptAlias /cgi-bin/ "/var/www"# <Directory "/var/www"># AllowOverride All# Options All# Order allow,deny# Allow from all# </Directory># AddHandler cgi-script .py復制代碼
C. 如何創建和使用Python CGI腳本
你是否想使用Python語言創建一個網頁,或者處理用戶從web表單輸入的數據?這些任務可以通過Python CGI(公用網關介面)腳本以及一個Apache web伺服器實現。當用戶請求一個指定URL或者和網頁交互(比如點擊」」提交」按鈕)的時候,CGI腳本就會被web伺服器啟用。CGI腳本調用執行完畢後,它的輸出結果就會被web伺服器用來創建顯示給用戶的網頁。
配置Apache web伺服器,讓其能運行CGI腳本
在這個教程里,我們假設Apache web伺服器已經安裝好,並已運行。這篇教程使用的Apache web伺服器(版本2.2.15,用於CentOS發行版6.5)運行在本地主機(127.0.0.1),並且監聽80埠,如下面的Apache指令指定一樣:
1
2
ServerName 127.0.0.1:80
Listen 80
下面舉例中的HTML文件存放在web伺服器上的/var/www/html目錄下,並通過DocumentRoot指令指定(指定網頁文件所在目錄):
1
DocumentRoot "/var/www/html"
現在嘗試請求URL:
這將返回web伺服器中下面文件的內容:
1
/var/www/html/page1.html
為了啟用CGI腳本,我們必須指定CGI腳本在web伺服器上的位置,需要用到ScriptAlias指令:
1
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
以上指令表明CGI腳本保存在web伺服器的/var/www/cgi-bin目錄,請求URL里包含/cgi-bin/的將會搜索這個目錄下的CGI腳本。
我們必須還要明確CGI腳本在/var/www/cgi-bin目錄下有執行許可權,還要指定CGI腳本的文件擴展名。使用下面的指令:
1
2
Options +ExecCGI
AddHandler cgi-script .py
下面訪問URL:
這將會調用web伺服器中下面所示腳本:
1
/var/www/cgi-bin/myscript-1.py
創建一個CGI腳本
在創建一個Python CGI腳本之前,你需要確認你已經安裝了Python(這通常是默認安裝的,但是安裝版本可能會有所不同)。本篇教程使用的腳本是使用Python版本2.6.6編寫的。你可以通過下面任意一命令(-V和–version參數將顯示所安裝Python的版本號)檢查Python的版本。
Shell
1
2
$ python -V
$ python --version
如果你的Python CGI腳本要用來處理用戶輸入的數據(從一個web輸入表單),那麼你將需要導入Python cgi模塊。這個模塊可以處理用戶通過web輸入表單輸入的數據。你可以在你的腳本中通過下面的語句導入該腳本:
Shell
1
import cgi
你也必須修改Python CGI腳本的執行許可權,以防止web伺服器不能調用。可以通過下面的命令增加執行許可權:
Shell
1
# chmod o+x myscript-1.py
Python CGI例子
涉及到Python CGI腳本的兩個方案將會在下面講述:
使用Python腳本創建一個網頁
讀取並顯示用戶輸入的數據,並且在網頁上顯示結果
注意:Python cgi模塊在方案2中是必需的,因為這涉及到用戶從web表單輸入數據。
例子1 :使用Python腳本創建一個網頁
對於這個方案,我們將通過創建包含一個單一提交按鈕的網頁/var/www/html/page1.html開始。
XHTML
1
2
3
4
5
6
<html>
<h1>Test Page 1</h1>
<form name="input" action="/cgi-bin/myscript-1.py" method="get">
<input type="submit" value="Submit">
</form>
</html>
當」提交」按鈕被點擊,/var/www/cgi-bin/myscript-1.py腳本將被調用(通過action參數指定)。通過設置方法參數為」get」來指定一個」GET」請求,伺服器將會返回指定的網頁。/var/www/html/page1.html在瀏覽器中的顯示情況如下:
/var/www/cgi-bin/myscript-1.py的內容如下:
1
2
3
4
5
6
7
#!/usr/bin/python
print "Content-Type: text/html"
print ""
print ""
print "CGI Script Output"
print "This page was generated by a Python CGI script."
print ""
第一行聲明表示這是使用 /usr/bin/python命令運行的Python腳本。」Content-Type: text/html」列印語句是必需的,這是為了讓web伺服器知道接受自CGI腳本的輸出類型。其餘的語句用來輸出HTML格式的其餘網頁內容。
當」Submit」按鈕點擊,下面的網頁將返回:
這個例子的要點是你可以決定哪些信息可以被CGI腳本返回。這可能包括日誌文件的內容,當前登陸用戶的列表,或者今天的日期。在你處理時擁有所有python庫的可能性是無窮無盡的。
例子2:讀取並顯示用戶輸入的數據,並將結果顯示在網頁上
對於這個方案,我們將通過創建一個含有三個輸入域和一個提交按鈕的網頁/var/www/html/page2.html開始。
XHTML
1
2
3
4
5
6
7
8
9
<html>
<h1>Test Page 2</h1>
<form name="input" action="/cgi-bin/myscript-2.py" method="get">
First Name: <input type="text" name="firstName"><br>
Last Name: <input type="text" name="lastName"><br>
Position: <input type="text" name="position"><br>
<input type="submit" value="Submit">
</form>
</html>
當」Submit」按鈕點擊,/var/www/cgi-bin/myscript-2.py腳本將被執行(通過action參數指定)。/var/www//html/page2.html顯示在web瀏覽器中的圖片如下所示(注意,三個輸入域已經被填寫好了):
/var/www/cgi-bin/myscript-2.py的內容如下:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/python
import cgi
form = cgi.FieldStorage()
print "Content-Type: text/html"
print ""
print ""
print "CGI Script Output"
print ""
print "The user entered data are:"
print "First Name: " + form["firstName"].value + ""
print "Last Name: " + form["lastName"].value + ""
print "Position: " + form["position"].value + ""
print ""
print ""
正如前面提到,import cgi語句用來確保能夠處理用戶通過web輸入表單輸入的數據。web輸入表單被封裝在一個表單對象中,叫做cgi.FieldStorage對象。一旦開始輸出,」Content-Type: text/html」是必需的,因為web伺服器需要知道接受自CGI腳本的輸出格式。用戶輸入的數據在包含form[「firstName」].value,form[「lastName」].value,和 form[「position」].value的語句中可以得到。那些中括弧中的名稱和/var/www/html/page2.html文本輸入域中定義的名稱參數一致。
當網頁上的」Submit」按鈕被點擊,下面的網頁將被返回。
這個例子的要點就是你可以很容易地讀取並顯示用戶在web表單上輸入的數據。除了以字元串的方式處理數據,你也可以用Python將用戶輸入的數據轉化為可用於數值計算的數字。
結論
本教程演示了如何使用Python CGI腳本創建網頁並處理用戶在網頁表單輸入的數據。查閱更多關於Apache CGI腳本的信息,點擊這里。查閱更多關於Python cgi模塊的信息,點擊這里。
D. python寫了一個CGI腳本,為什麼從網頁看到的是腳本的內容
默認情況下,文件需要放在'/cgi-bin' 或 '/htbin'目錄下,才會被解釋執行,官方說法如下:
The do_GET() and do_HEAD() functions are modified to run CGI scripts
and serve the output, instead of serving files, if the request leads to
somewhere below the cgi_directories path.
The CGIHTTPRequestHandler defines the following data member:
cgi_directories
This defaults to ['/cgi-bin', '/htbin'] and describes directories to
treat as containing CGI scripts.