2016-08-25 63 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蟒蛇文件包含以下簡單的定義:

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

的HTML文件的頁面測試是:

<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

您好謝爾蓋,下面是回溯:回溯(最近一次通話最後): 文件「C:/ Flask_Web/__init__.py」,第37行,觸發器 t =觸發器(數據) TypeError:trigger()取0位置參數,但1被給予 – Saurav

回答

1

您導入一個名爲trigger功能,但你也是一個定義在導入的模塊中有一個名爲trigger的函數。當trigger調用trigger時,它正在調用它自己,並且它不接受任何參數。您需要重命名其中一個功能,或者輸入爲import url_trigger,然後將導入的功能稱爲url_trigger.trigger

+0

這就像一個魅力。非常感謝你糾正錯誤。 – Saurav