Как я могу сохранить предыдущий URL во Flask? - PullRequest
0 голосов
/ 23 ноября 2018

Я создаю книжный магазин, и одна из функций заключается в том, что, попав на страницу, я бы хотел отфильтровать его и показывать только 10 или 20 результатов на странице.

<form action="{{ url_for('show_10') }}">
<div class="dropdown">
  <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Show Results
  </button>
  <div class="dropdown-menu" aria-labelledby="dropdownMenu2">
    <button class="dropdown-item" value = "{{ request.path }}" type="button">Show 10 </button>
  </div>
</div>
    </form> 

Итакчто я хочу сделать, если текущий путь - это определенный маршрут, т. е. "/ sort_by_rating", то он должен перейти к функции, которая будет показывать результаты только по 10 на страницу для этого поиска.

@app.route('/show_10', methods = ['GET', 'POST'])
def show_10():
    page = request.args.get('page', 1, type=int)
    print(request.data['name'])
    if request.method == 'POST':
        if "/sort_by_bestseller" in request.form:
            books = Book.query.filter(Book.best_seller == True).paginate(page=page, per_page=10)
        if "/sort_by_rating" in request.form:
            books = Book.query.order_by(Book.rating).paginate(page=page, per_page=10)
        if "/sort_by_date" in request.form:
            books = Book.query.order_by(Book.date).paginate(page=page, per_page=10)
    return render_template('search_by_author.html', books=books)

IЯ очень новичок в веб-разработке.Я не уверен, что моя логика верна.Однако, когда я нажимаю на кнопку, чтобы показать 10 результатов, она просто остается на текущей странице, и никаких изменений не происходит.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 23 ноября 2018

Ваша функция показывает результат, только если запрос является постом.Но вы никогда не указывали своей форме отправлять сообщение.Это нужно сделать с помощью атрибута метода:

<form action="{{ url_for('show_10') }}" method="POST">
...