提问者:小点点

Python3.7 TypeError:缺少1个必需的位置参数:'input'


我已经完成了我的功能,但是当我运行网络服务器时,我收到以下错误:

TypeError: index()缺少1个必需的位置参数:“输入”

这是我的代码:

from sklearn import tree
from flask import Flask

app = Flask(__name__)

@app.route('/', methods=['GET','POST'])
def index(input):
    input = [[1,1,2,3,3,1,1,2]]

    data = pd.read_csv('datawadek.csv')
    y = data.KELAS
    x = data.drop('KELAS', axis = 1)

    cart = tree.DecisionTreeClassifier()

    cart = cart.fit(x,y)

    return cart.predict(input)

if __name__ == '__main__':
    app.run(debug=True)

我对python编程非常陌生。请帮助我提供任何建议或解决方案。

祝你今天过得愉快


共1个答案

匿名用户

我假设您想将输入作为参数传递到烧瓶中。您不能将输入定义为烧瓶endpoint函数的参数。相反,您应该使用request. args.get读取上述函数中的参数,如下所示:

@app.route('/', methods=['GET','POST'])
def index():
    input = request.args.get('input')
    if input is None:
        input = [[1,1,2,3,3,1,1,2]]

从python文档:

request对象可以从所有flask api自动访问,它包含您通过api传递的所有数据。要访问传入的请求数据,您可以使用全局请求对象。Flask为您解析传入的请求数据,并允许您通过该全局对象访问它。在内部,Flask确保您在多线程环境中始终为活动线程获取正确的数据。

编辑:

在注释中,我们有一个类似的路径参数示例:

@app.route('/<input>', methods=['GET','POST'])
def index(input):

最终结果将与我上面的初始答案相同,但从设计角度来看不太实用。您将使用post方法传递数据数组,在这种情况下,数据应该在请求中。

不这样做的另一个原因是您还应该始终避免将数组作为路径参数传递,除非