Я создаю веб-приложение, которое показывает список книг, пользователь нажимает на книгу, и он направляется к книге, содержащей другой список информации этой книги.Books.html перенаправляет пользователя на review.html, проблема в том, что функция url_for в файле books.html не работает должным образом.
файл books.html представляет собой предопределенный список для начальной загрузки 4, я простоссылка на href = "{{url_for ('review', book_id = book.id)}}"
@app.route("/books")
def books():
''' show books in a list. '''
# Select book info based on first characters.
books = db.execute("SELECT * FROM books WHERE isbn LIKE :isbn", {"isbn":"0"+"%"})
if books is None:
raise RuntimeError("Error @ books route, Didn't fetch rows from books table.")
return render_template("books.html",books=books)
@app.route("/books/<int:book_id>")
def review(book_id):
''' Show book information inner and API '''
# Get book information from books table using book_id got from books.html
bookInfo = db.execute("SELECT * FROM books WHERE id=:book_id", {"book_id": book_id}).fetchone()
# Error handling.
if bookInfo is None:
raise RuntimeError("Error @ route: review, didn't fetch book information from books table.")
return render_template("review.html", bookInfo=bookInfo)
<!-- books.html -->
{% extends "base.html" %}
{%block body%}
<!-- book list <books.html> -->
<!-- this will have a template for loop over elements in database -->
<div class="container list-group">
{% for book in books %}
<a href="{{url_for('review', book_id=book.id)}}" class="list-group-item list-group-item-action flex-column align-items-start">
<div class="d-flex w-100 justify-content-between">
<h5 class="mb-1">{{book.title}}</h5>
<small><h6>ISBN: {{book.isbn}}</h6></small>
</div>
<p class="mb-1"><h6>author: {{book.author_name}}</h6></p>
<small>publication year: {{book.publish_year}}</small>
</a>
{%endfor%}
</div>
{%endblock%}
<!-- review.html -->
{% extends "base.html" %}
{%block body%}]
<!-- Book details, and user's review -->
<div class="container">
<dl class="row">
<dt class="col-sm-3">Book title</dt>
<dd class="col-sm-9">{{bookInfo.title}}</dd>
<dt class="col-sm-3">Book author</dt>
<dd class="col-sm-9">{{bookInfo.author_name}}</dd>
<dt class="col-sm-3">ISBN</dt>
<dd class="col-sm-9">{{bookInfo.isbn}}</dd>
<dt class="col-sm-3">Publication year</dt>
<dd class="col-sm-9">{{bookInfo.publish_year}}</dd>
</div>
{%endblock%}
Я ожидаю получить список информации о книге, выбранной пользователем, новместо этого я получаю эту ошибку: TypeError: Функция представления не вернула правильный ответ.Функция либо вернула None, либо завершилась без оператора return.