werkzeug.routing.BuildError: Не удалось создать URL для конечной точки 'Bookdetails'. Вы забыли указать значения ['book_id']? - PullRequest
0 голосов
/ 15 апреля 2020

Я пытался отладить эту проблему, и я видел некоторые похожие потоки с той же проблемой, но даже после перекрестной проверки всех параметров, я, кажется, проблема все еще.

Я использую следующее:

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). Я не уверен, что я делаю неправильно, чтобы получить следующую ошибку.

1 Ответ

1 голос
/ 15 апреля 2020

Вы используете books_id при создании URL, но конечная точка ожидает, что параметр будет иметь имя 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) }}">
...