2017-04-01 10 views
1

私はwebdevの経験が少しあり、ちょうどpythonを学び始めました。引数をとり、プログラムを実行し、printステートメントをコンソールに出力するPythonスクリプトを作成しました。このプログラムをウェブページの後ろに置くことができるのであれば私は不思議です。ウェブサイトの入力でpythonスクリプトを実行する

ウェブページにドロップダウンがある場合は、オプションを選択して[実行]ボタンをクリックします。次に、選択したオプションでpythonスクリプトが実行され、レポートがページに表示されます。

私はいくつかの類似の記事を見てきました:Execute a python script on button click

run python script with html button

が、彼らは非常にさまざまなソリューションを提供しているようだ、と人々はPHPのアイデアは安全ではないと考えているようです。私はもう少し明白な何かを探しています。 pythonスクリプトを変更して、printステートメントの代わりにajsonや何かを返すことは問題ありません。

答えて

1

WebページとPythonプログラムの間で通信するかなり一般的な方法は、PythonをWSGI serverとして実行することです。効果的に、pythonプログラムは、GETとPOSTを使用してWebページと通信する別個のサーバーです。

このアプローチの素晴らしい点の1つは、Pythonアプリケーションを適切なWebページから切り離すことです。開発中にhttpリクエストをテストサーバーに直接送信することでテストできます。

Pythonにはbuilt-in WSGI implementationが含まれているため、WSGIサーバーの作成はかなり簡単です。最小の例は次のとおりです。

from wsgiref.simple_server import make_server 

# this will return a text response 
def hello_world_app(environ, start_response): 
    status = '200 OK' # HTTP Status 
    headers = [('Content-type', 'text/plain')] # HTTP Headers 
    start_response(status, headers) 
    return ["Hello World"] 

# first argument passed to the function 
# is a dictionary containing CGI-style environment variables 
# second argument is a function to call 
# make a server and turn it on port 8000 
httpd = make_server('', 8000, hello_world_app) 
httpd.serve_forever() 
+0

ありがとうございました! Javascriptのものからどのように見えるか説明できますか?上で書いたコードを "helloWorld.py"と呼び、コマンドラインで "hello"という引数を取ると、 "hello"というスクリプトをどのように渡しているのでしょうか? – Acoustic77

+0

WSGIサーバーはHTTP要求をリッスンするだけで、戻り値は要求に応じて送信されます。この質問には、JSでそれを行うさまざまな方法の例がたくさん含まれています:http://stackoverflow.com/questions/247483/http-get-request-in-javascript – theodox

+0

私はあなたの助けに感謝しますが、私はまだ運。私は単純にhtmlページを作成するためにpythonスクリプトを修正しました。文字通り私が必要とするのは、これのJavaScript側を理解することです。スクリプトに文字列を渡して実行するだけです。 (スクリプト全体だけではなく、関数内の関数でもあります。つまり、$ python3 myscript.py inputString – Acoustic77

関連する問題