2011-09-18 18 views
33

私は非常にPythonに新しいです。 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; 

その後、私は私ではない http://localhost/index.py

を使用してスクリプトを実行します。しかし、それindex.py

として私はlocalhostで、このページを保存実行されたpythonスクリプトを示しました。代わりに、上記のコードをHTMLとして示しました。問題はどこだ?誰かWebページでPythonを実行する方法を教えてください?

+4

これはpython webではなく、python web framework e、g、webpyまたはdjangoなどを設定し、mod_pythonでappacheを設定する必要があります。 –

+1

ウィスキーを試してみよう! :D "WSGI"(Webサーバーゲートウェイインターフェイス)。 – Arunmu

+2

PajamasやSkulptなどのフレームワークを使用して、Webページ(クライアント側)でPythonを実行することができます。 –

答えて

26

表示するあなたのコードためには、あなたはいくつかのことを必要とする:

まず、HTTPリクエストを処理するサーバーが必要です。現時点では、ローカルハードドライブ上のFirefoxでファイルを開くだけです。 Apacheなどのようなサーバが必要です。

第2に、ファイルを提供するサーバーがあると仮定すると、そのコードをサーバー用のPythonコードとして解釈するものが必要になります。 Pythonユーザーのために、今日のソリューションはmod_wsgiです。しかし、単純なケースではCGI(more info here)を使うことができますが、Webページを簡単に作成したい場合は、Djangoのような既存のPython Webフレームワークを使うべきです。

これを設定することは非常に手間がかかることがありますので、準備してください。

14

他にも指摘されているように、Pythonには多くのWebフレームワークがあります。

しかし、あなただけのPythonを使い始めるされているとして見て、簡単なCGIスクリプトがより適切であるかもしれない:

  1. index.cgiにスクリプトの名前を変更します。実行権限を与えるには、chmod +x index.cgiも実行する必要があります。この後、Pythonのコードは出力がブラウザに行く以外、ちょうどターミナルのように実行する必要があります

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

  • は、ファイルの先頭でこれらの2行を追加します。その作業が完了したら、the cgi moduleを使用して、ブラウザからデータを戻すことができます。

    注:これはあなたのWebサーバーがLinuxを実行していることを前提としています。 Windowsの場合、代わりに#!/Python26/pythonが動作する可能性があります。

  • +2

    私が使っているWebホスティングでは、代わりに '#!/ usr/bin/env python # - * - coding:UTF-8 - * - 'を追加する必要がありました。 – GrandAdmiral

    7

    自分のコンピュータを使用している場合は、XAMPP(またはWAMPPが動作する)というソフトウェアをインストールします。これは基本的にあなたのコンピュータ上でのみ動作するウェブサイトサーバーです。次に、それがインストールされたら、xamppフォルダーに移動し、htdocsフォルダーをダブルクリックします。今あなたがする必要があるのは、htmlファイルを作成することです(私はrunpython.htmlと呼ぶつもりです)。

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

    今、Pythonのファイルでは、我々は基本的に印刷しようとしている(必要に応じてと入力)

    あなたのHTML本体に、この中に追加(同様のhtdocsするの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で使用すると、それを達成できます。 pythonスクリプトを実行している場所の "templates"という名前のフォルダにHTMLページを保存することを忘れないでください。

    ので、あなたのフォルダが

    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ファイルの小さなテンプレートは、2つの文字列を比較する簡単なタスクを達成することができ、それを通して、容易に合うように成形することができた小さな小さな方法ですあなたの必要条件

    関連する問題