【问题标题】:werkzeug.routing.BuildError: Could not build url for endpoint 'Bookdetails'. Did you forget to specify values ['book_id']?werkzeug.routing.BuildError:无法为端点“Bookdetails”构建 url。您是否忘记指定值 ['book_id']?
【发布时间】:2020-04-15 07:08:04
【问题描述】:

我一直在尝试调试这个问题,并且我看到一些类似的线程具有相同的问题,但是即使在交叉检查所有选项之后,我似乎仍然有问题。

我正在使用以下内容:

application.py

@app.route("/Booksearch/<int:book_id>", methods=["GET", "POST"])
def Bookdetails(book_id):

if request.method == "GET":
    if session["Username"] is None:
        return render_template("error.html", message="Some error message.")
    else:
        return render_template("some.html")

在我的 HTML 中

<a href="{{ url_for('Bookdetails', books_id=result.id) }}">

当我点击链接时,我可以在浏览器上看到正确的book_id (/Booksearch/123 where book_id=123)。我不确定我做错了什么仍然会出现以下错误。

【问题讨论】:

    标签: python html forms flask python-requests


    【解决方案1】:

    您在创建 URL 时使用了books_id,但端点希望将参数命名为book_id(不带s):

    def Bookdetails(book_id): <- without s
    

    在您的模板中,您有:

    <a href="{{ url_for('Bookdetails', books_id=result.id) }}">  <- with s in books
    

    改用正确的形式:

    <a href="{{ url_for('Bookdetails', book_id=result.id) }}">
    

    【讨论】:

    • 感谢您指出这一点。很抱歉,在发布我的问题之前我忘记更正了。我总是将我的变量设置为 book_id,但我只是在玩这个名字,看看是否有什么不同(从 book_id 更改为 books_id)。最初我的代码是你建议的方式,我仍然有错误。
    • 错误告诉你你有一个电话到url_for('Bookdetails'),其中book_id不包括在内。要么是因为您的问题中的拼写错误,要么是因为您没有将其包含在论点中。如果没有相关信息(即在这种情况下它实际抱怨的事情)——并且您的问题中有实际错误,就无法再说什么了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多