Проблема в том, как организован ваш код.Переменные в функции ограничены внутри функции, поэтому books
недоступно для второго маршрута.В дополнение к этому у вас есть конфликт имен , где books=books
ссылается на саму функцию (которая определена в области видимости модуля).
Если вы хотите совместно использовать код между маршрутами, поместите его в отдельную функцию:
def get_books(query, show_nav_bar=False):
query = query.lower()
query_like = '%' + query + '%'
books = db.execute('SELECT * FROM books WHERE (LOWER(isbn) LIKE :query) OR (LOWER(title) LIKE :query) '
'OR (LOWER(author) LIKE :query)', {'query': query_like}).fetchall()
if not books:
return render_template('error.html', message='No Books were Found!', navbar=True)
return render_template('books.html', query=query, books=books, navbar=show_nav_bar)
@app.route("/search", methods=['GET', 'POST'])
def search():
if request.method == 'GET':
return render_template('search.html', navbar=True)
else:
return get_books(request.form.get('query'), show_nav_bar=True)
@app.route("/books", methods=['GET', 'POST'])
def books():
return get_books(request.form.get('query'))