从外部python文件调用函数抛出500错误
问题描述:
我想从另一个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>
答
您导入一个名为trigger
功能,但你也是一个定义在导入的模块中有一个名为trigger
的函数。当trigger
调用trigger
时,它正在调用它自己,并且它不接受任何参数。您需要重命名其中一个功能,或者输入为import url_trigger
,然后将导入的功能称为url_trigger.trigger
。
+0
这就像一个魅力。非常感谢你纠正错误。 – Saurav
显示完整的堆栈跟踪。 –
您好谢尔盖,下面是回溯:回溯(最近一次通话最后): 文件“C:/ Flask_Web/__init__.py”,第37行,触发器 t =触发器(数据) TypeError:trigger()取0位置参数,但1被给予 – Saurav