2016-08-12 16 views
-1

私はapp.pyとindex.htmlファイルを作成しました。私の問題は、送信時にPOSTから収集した入力をPythonスクリプトで実行し、同じまたは異なるHTMLページにスクリプト出力を表示したいということです。私はCGIとFlaskを使用しました。私はどのように進めるべきかを完全には知らない。私はオンラインで研究していますが、何か非常に有用なものは見つかりませんでした。どんな助けもありがとう。Flaskでpythonスクリプトの結果を実行するには

ここに私のコードです。

from flask import Flask, render_template, request, redirect 

app = Flask(__name__) 

@app.route("/") 
def main(): 
    return render_template('index.html') 


@app.route("/src_code/main.py", methods = ['POST']) 
def run_app(): 
    id = request.form['id'] 
    name = request.form['name'] 
    url = request.form['url'] 

    if not id or not name or not url: 
    return render_template('index.html') 
    else: 
     #execute the python script. 

if __name__ == "__main__": 
    app.run() 

編集:私は私の機能をインポートするには、次のコードを使用している

。最後に、index.htmlの送信ボタンをクリックしたときにエラーが発生しましたが、

script_analyze = Analyzer() 
    result = script_analyze.main() 

    return render_template(results.html', data=result) 

AttributeError: 'WSGIRequestHandler' object has no attribute 'environ' 

この属性のエラーがなぜ発生するのかはわかりません。

+0

私は何が問題なのか分かりません。すでに必要なものはすべて手元にあります。新しいテンプレートを使用してelseファイルに戻ります。 – polku

+0

返品に新しいテンプレートを使用するにはどうすればよいですか?私にサンプルを見せてもらえますか? @polku – Pythoner1234

+1

'return render_template( 'newtemplate.html'、data = script_output)'あなたが既にしたように、もう一度私はあなたの問題が何かを見ません。 – polku

答えて

1

あなたは別のPythonスクリプトを実行したいので... import他のスクリプトができる場合は、次のようなものを使用して呼び出して結果を保存することができます - 他のスクリプトは値を返す関数。他の人が言っているよう

from othermodule import function_to_run 
... 
# where you want to call it 
result = function_to_run() 

その後、テンプレートにデータとして、この結果を渡し、render_templateを使用することができます(それはあなたがフラスコに出力したい形式ですでにかどうか、単純に結果を返します)。

これは機能するのでしょうか、それとも動作しないスクリプトを実行するスクリプトですか?それが問題であれば、スクリプトの詳細を教えてください。

+0

あなたのコードを試しました AttributeError: 'WSGIRequestHandler'オブジェクトに 'environ'属性がありません。@LindsayWard – Pythoner1234

+0

こんにちは。あなたの編集dは、私のクラスをインポートすることができませんでした。あなたが何をどのように '輸入 'したかを示すことはできません。これも含めることができますか? どこでも 'environ'を使いますか? –

関連する問題