2016-08-25 88 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