2011-09-18 63 views
33

我對python很陌生。只要知道什麼是蟒蛇。 我創建了下面的代碼(在Python中IDLE):如何在網頁中運行python腳本

print "Hi Welcome to Python test page\n"; 
print "Now it will show a calculation"; 
print "30+2="; print 30+2; 

然後我在本地主機保存該頁面index.py

我運行使用 http://localhost/index.py

但它不是腳本顯示執行的python腳本。相反,它將上面的代碼顯示爲HTML。哪裏有問題?請任何人告訴我如何在網頁中運行python?

+4

這是python不是php,你必須設置python web框架e,g,webpy或者django等,並且配置appache和mod_python。 –

+1

嘗試威士忌! :D「WSGI」(Web服務器網關接口)。 – Arunmu

+2

可以使用Pyjamas和Skulpt等框架在網頁(客戶端)上運行Python。 –

回答

26

爲了使您的代碼顯示,你需要幾件事情:

首先,需要有處理HTTP請求的服務器。目前,您只需在本地硬盤上使用Firefox打開文件即可。像Apache或類似的服務器是必需的。其次,假設您現在有一臺服務器來提供文件,您還需要將代碼解釋爲服務器的Python代碼。對於Python用戶來說,現在解決方案是mod_wsgi。但是對於更簡單的情況,您可以堅持使用CGI(更多信息here),但是如果您想輕鬆生成網頁,則應該使用現有的Python Web框架(如Django)。

設置這可以是相當麻煩,所以要做好準備。

14

正如其他人指出的那樣,Python有很多web框架。

但是,看到你是剛開始使用Python,一個簡單的CGI腳本可能更合適:

  1. 重命名你的腳本index.cgi。您還需要執行chmod +x index.cgi以賦予其執行權限。

  2. 在文件的開頭添加這兩條線:

 
#!/usr/bin/python 
print('Content-type: text/html\r\n\r') 

這個Python代碼後應該就像在終端上運行,除了輸出變爲到瀏覽器。當你得到這個工作時,你可以使用the cgi module從瀏覽器中獲取數據。

注意:這假定您的網絡服務器正在運行Linux。對於Windows,#!/Python26/python可能會起作用。

+2

對於我正在使用的虛擬主機,我不得不添加'#!/ usr/bin/env python # - * - coding:UTF-8 - * - '。 – GrandAdmiral

7

如果您使用自己的計算機,請安裝名爲XAMPP(或WAMPP的軟件)的軟件。這基本上是一個只能在你的電腦上運行的網站服務器。然後,一旦安裝,請轉到xampp文件夾,然後雙擊htdocs文件夾。現在你需要做的是創建一個html文件(我將稱之爲runpython.html)。 (請記住,移動蟒蛇文件的htdocs以及)

添加在給你的HTML的身體(和投入必要的)現在

<form action = "file_name.py" method = "POST"> 
    <input type = "submit" value = "Run the Program!!!"> 
</form> 

,在Python文件中,我們基本上將是印刷HTML代碼。

#We will need a comment here depending on your server. It is basically telling the server where your python.exe is in order to interpret the language. The server is too lazy to do it itself. 

    import cgitb 
    import cgi 

    cgitb.enable() #This will show any errors on your webpage 

    inputs = cgi.FieldStorage() #REMEMBER: We do not have inputs, simply a button to run the program. In order to get inputs, give each one a name and call it by inputs['insert_name'] 

    print "Content-type: text/html" #We are using HTML, so we need to tell the server 

    print #Just do it because it is in the tutorial :P 

    print "<title> MyPythonWebpage </title>" 

    print "Whatever you would like to print goes here, preferably in between tags to make it look nice" 
+0

對不起,我編輯了幾次奇怪的縮進 – ytpillai

5

使用flask在Python中的庫,你可以實現這一點。 請記住將您的HTML頁面存儲到您正在運行python腳本的內部名爲「templates」的文件夾中。

讓你的文件夾看起來像

  1. 模板(它將包含HTML文件的文件夾)
  2. 您的Python腳本

這是你的Python腳本的一個小例子。這只是檢查剽竊。

from flask import Flask 
from flask import request 
from flask import render_template 
import stringComparison 

app = Flask(__name__) 

@app.route('/') 
def my_form(): 
    return render_template("my-form.html") 

@app.route('/', methods=['POST']) 
def my_form_post(): 

text1 = request.form['text1'] 
text2 = request.form['text2'] 
plagiarismPercent = stringComparison.extremelySimplePlagiarismChecker(text1,text2) 
if plagiarismPercent > 50 : 
    return "<h1>Plagiarism Detected !</h1>" 
else : 
    return "<h1>No Plagiarism Detected !</h1>" 
if __name__ == '__main__': 
    app.run() 

這是用來

<!DOCTYPE html> 
<html lang="en"> 
<body> 
    <h1>Enter the texts to be compared</h1> 
    <form action="." method="POST"> 
     <input type="text" name="text1"> 
     <input type="text" name="text2"> 
     <input type="submit" name="my-form" value="Check !"> 
    </form> 
</body> 
</html> 

THID HTML文件的一小模板是一個小一點的方式,通過它可以實現比較兩個字符串的一個簡單的任務,可以很容易地成型,以適應你的要求