如何在Flask中保存以前的URL?

时间:2018-11-23 18:04:35

标签: python flask jinja2 flask-sqlalchemy

我正在创建一个书店,功能之一是,一旦进入页面,我想对其进行更多过滤,每页仅显示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)

我对Web开发非常陌生。我不确定我的逻辑是否正确。但是,当我单击该按钮来显示10个结果时,它仅停留在当前页面上,并且未发生任何更改。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

仅当请求为帖子时,您的函数才会显示结果。但是您从未告诉您的表格实际发送帖子。您需要使用method属性来实现:

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