【问题标题】:Says I'm missing 1 position argument (a spotipy object) Flask说我缺少 1 个位置参数(一个斑点对象)烧瓶
【发布时间】:2020-12-19 23:11:40
【问题描述】:

使用烧瓶制作网站。使用 POST 获取用户输入后,我需要将检索到的信息发送到另一个函数。

得到错误提示:

TypeError: search() missing 1 required positional argument: 'spotifyObj'

这是我认为导致它的代码:

@app.route("/", methods=["POST", "GET"])
def home(client_id=client_id, client_secret=client_secret, redirect_uri=redirect_uri, scope=scope):
    if request.method == "POST":
        user = request.form["username"]

        token = util.prompt_for_user_token(user, scope, client_id, client_secret, redirect_uri)
        obj = createObj(token)

        searchType = request.form["searchType"]

        return redirect(url_for("search", searchT=searchType, spotifyObj=obj))
    else:
        return render_template("home.html")

@app.route("/<searchT>", methods=["POST", "GET"])
def search(searchT,spotifyObj):

我不明白问题出在哪里。这也是我第一次开发网站,如果有一堆重大的新手错误,请见谅。

【问题讨论】:

    标签: python http web flask spotipy


    【解决方案1】:

    问题如下。 您有一个名为 search 的方法。

    该方法期望获得 2 个参数:

    • 搜索T
    • spotifyObj
    @app.route("/<searchT>", methods=["POST", "GET"])  
        def search(searchT,spotifyObj)
    

    Flask 装饰器app.route 只向方法传递一个参数。

    你有两个选择:

    • 更改方法签名并使其接受 1 个参数
    • 更改装饰器内的 /&lt;searchT&gt; 并确保它会传递 2 个参数

    【讨论】:

    • 好吧,这是有道理的。我尝试了第二个选项,但我认为它不起作用,因为 obj 不是字符串。有没有办法通过这种方式传递对象?
    • 没有。没有办法。您只能传递简单的变量,如 str 或 int
    • 可以直接调用search(不带redirect),得到结果并在'home'中使用
    猜你喜欢
    • 2015-07-11
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-29
    • 2014-09-13
    • 2021-09-15
    相关资源
    最近更新 更多