@app.route('books', methods=['GET', 'POST')
def books():
book_list = Book.query.all()
return render_template('books.html', book_list=book_list)
Шаблон;
<ul>
{% for x in book_list %}
<li><a href="{{ url_for('bookpage', title=x.title, book_id=x.id }}">{{ x.title }} (by) {{ x.author }} (year) : {{ x.year }}</a></li>
{% endfor %}
</ul>
Чтобы получить URL с заголовком, ваша функция просмотра должна быть такой, как показано ниже.Книга id
важна, поскольку книги могут иметь одинаковые названия, поэтому их нельзя использовать в качестве уникальных идентификаторов.
@app.route('bookpage/<int:book_id>/<string:title>', methods=['GET', 'POST')
def bookpage(title=None, book_id=None):
Я бы посоветовал вам использовать Flask-SQLAlchemy и иметь Bookкак объект, как показано ниже, и вы сможете получить доступ к атрибутам, как показано в шаблоне Jinja.
class Book(db.Model):
id = db.Column(db.Integer, db.ForeignKey)
title = db.Column(Text)
author = db.Column(Text)
Если вы хотите получить доступ к страницам книги, у вас может быть модель «Один ко многим» для книг и страниц, то есть одна книга имеет много страниц, если вы загружаете контент.