首页 > 解决方案 > 说我缺少 1 个位置参数(一个斑点对象)烧瓶

问题描述

使用烧瓶制作网站。在我使用 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):

我不明白问题是什么。这也是我第一次开发一个网站,如果有一堆重大的新手错误,我很抱歉。

标签: pythonhttpwebflaskspotipy

解决方案


问题如下。您有一个名为search.

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

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

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

你有两个选择:

  • 更改方法签名并使其接受 1 个参数
  • 更改/<searchT>装饰器内部并确保它将传递 2 个参数

推荐阅读