2016-08-25 6 views
-1

別のPythonファイルから関数を呼び出そうとしています。私はその機能をインポートしました。関数を外部的に呼び出すと、期待通りに機能します。外部Pythonファイルから関数を呼び出すと500のエラーが発生する

しかし、render_templateまたはリダイレクトを返す前に関数を呼び出そうとすると、500エラーが発生します。 私は何か間違っていることを知っていますが、私は何がわかりません。どのような助けも高く評価されます。

from flask import Flask, render_template, request, redirect, url_for 
from content_man import Content,Page_Content 
from url_trigger import trigger 

TEST_TOPIC = Content() 
PAGE_TOPIC = Page_Content() 

app = Flask(__name__) 

@app.route('/',methods=["GET","POST"]) 
def homepage(): 
    return render_template("main.html") 

@app.route('/dashboard/',methods=["GET","POST"]) 
def dashboard(): 
    return render_template("dashboard.html", TEST_TOPIC=TEST_TOPIC) 

@app.route('/test/', methods=["GET","POST"]) 
def test(): 
    if request.method == "POST": 
     selected_list = request.form.getlist("to_run") 
     print (selected_list) 
     return redirect(url_for('trigger',selected_list=selected_list)) 
    else: 
     return render_template("test.html", PAGE_TOPIC=PAGE_TOPIC) 

@app.route('/trigger/', methods=["GET","POST"]) 
def trigger(): 
    data = request.args.getlist('selected_list') 
    t = trigger(data) 
    return "hey" 



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

エラーが@ app.routeである( '/トリガ/'、メソッド= [ "GET"、 "POST"])私は、関数、トリガーを呼び出すしようとしています。

マイurl_triggerパイソンファイルは単純な定義の下に含まれています。あなたはtriggerという名前の関数をインポートしていますが、また定義

<div class="container"> 
    <form method="post" action = "{{ url_for('test') }}"> 
     {% for row_index in range(PAGE_TOPIC['Critical BP']|count) %} 
      <div class="checkbox"> 
       <label><input type="checkbox" name="to_run" value="{{  PAGE_TOPIC['Critical BP'][row_index] }}">{{ PAGE_TOPIC['Critical BP'][row_index] }}</label> 
      </div> 
     {% endfor %} 
     <div> 
      <label><input type="submit" /></label> 
     </div> 
    </form> 
</div> 
+0

完全なスタックトレースを表示します。 –

+0

こんにちはSergey、以下はトレースバックです:トレースバック(最近の最後のコール): ファイル "C:/ Flask_Web/__ init__.py"、トリガー内の37行目 t = trigger(data) TypeError:trigger位置的な引数が1つは – Saurav

答えて

1

def trigger(my_list=[], *args): 
for i in my_list: 
    print (i) 

ページのテストのためのHTMLファイルがようですインポートを実行するモジュールにtriggerという名前の関数があります。 triggertriggerを呼び出すと、自身を呼び出しており、引数を受け入れません。関数の名前を変更するか、またはインポートをimport url_triggerとしてから、インポートされた関数をurl_trigger.triggerと参照する必要があります。

+0

与えられた魅力のように働いた。間違いを訂正してくれてありがとう。 – Saurav

関連する問題